当前位置: 首页 > 知识库问答 >
问题:

@XmlRootElement不工作在泽西Rest

融烨磊
2023-03-14

错误:

找不到媒体type=application/xml、type=class com.example.DemoRest2.Employee、genericType=class com.example.DemoRest2.Empayee的MessageBodyWriter。

我想返回Employee的对象。类,但获取上述错误。我正在使用@XmlRootElement注释。然而,当我以字符串格式返回它时,它工作得很好。

员工资源.java

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("employee")
public class EmployeeResource {

@GET
@Produces(MediaType.APPLICATION_XML)
public Employee getEmp() {
    
    Employee e1 = new Employee();
    e1.setName("Tom");
    e1.setAge(25);
    System.out.println(e1);
    
    return e1;
}
}

Employee.java

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Employee {

private String name;
private int age;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
@Override
public String toString() {
    return "Employee [name=" + name + ", age=" + age + "]";
}   

}

在用户界面上获取“内部服务器错误 500”

我已经有了以下依赖项:jersey media jaxb-3.0.2 jaxb api-2.3.1 jersey container servlet核心jersey-hk2 jersey版本-3.0.2

共有1个答案

翟冯浩
2023-03-14

Jakarta EE工作组宣布,随着Jakarta EE 9 Platform和Web Profile规范以及相关TCK的发布,javax现在正式并最终更名为jakarta。

要使用该@XmlRootElement,请在添加以下内容后导入jakarta.xml.bind.annotation.XmlRootElement,

<dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.1</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-jaxb</artifactId>
        <version>2.33</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-osgi</artifactId>
        <version>3.0.2</version>
    </dependency>
 类似资料:
  • 我使用带有spring boot的jersey,我有一个异常映射器: 同样注册,并使用调试,我可以看到这个映射器被正确调用,但是无论使用junit测试还是手动测试,最终响应仍然返回404。 以下是测试: 然后在泽西岛配置中注册:

  • 我将javax和jersey用于我的api应用程序(公开apiendpoint),我试图通过提供一个实现ExceptionMapper的提供者来捕获来自fasterXml的异常(在put和post调用时)。 我的问题是,在POST或PUT上,每当我发送错误的属性名称时,有时我的映射器会捕获异常,有时则不会。例如: > 运行我的应用程序一次- 再次运行我的应用程序(重启)- 我正在使用球衣2。x、

  • 我无法上传新泽西州的文件。使用泽西1.9。InputStream到达服务时为空。我尝试过将其作为普通表单提交和使用jQuery表单插件的AJAX提交,但结果都是一样的。也没有记录任何异常,这让它更加令人沮丧。 HTML表单 聚甲醛 Eclipse中的依赖层次结构显示mimepull.jar1.6也被引入。 剩下的服务 如果我添加@FormDataParam(“fileupload_name”)Fo

  • 我试图建立一个示例REST Web服务使用Eclipse在Ubuntu和使用maven/jersey/tomcat。大部分设置都很顺利,服务部署在服务器上。然而,在调用完整的上下文URL时,我在服务器上得到了下面的错误 javax。servlet。ServletException:Servlet。servlet jersey serlvet的init()引发异常组织。阿帕奇。卡塔琳娜。验证者。Au

  • 如何让jersey和@webservlet协同工作? 泽西资源配置: 在resourceConfig中注册的jersey资源: web servlet 案例1:访问此http://localhost:8088/ResponseFilterweb/login 控制台日志: 访问这个http://localhost:8088/ResponseFilterweb/hello 案例2:更改应用程序配置资源

  • 尝试将Jetty Gradle插件添加到当前项目中。我的战争在Tomcat部署中运行良好,但Jetty似乎因404错误而崩溃——好像它没有正确读取web.xml(验证它在那里)。 localhost:8080/rest/test localhost:8080/rest/test 我的简化代码(Java) 建筑等级 Web.xml