Jersey 在尝试返回 XML 响应时返回 500

2023-12-04

我正在尝试使用基于 Jersey 2.12 创建自己的 RESTful WS 应用程序this文章。我想根据从 url 传递的 id 返回一个类的 XML 表示形式,但是,在尝试从以下任一位置尝试时,我收到了 500 响应代码高级休息客户端应用程序(谷歌浏览器应用程序)或浏览器。以下是详细信息:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-
    app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>WS_RESTful_Practice</display-name>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <!-- Register resources and providers under com.vogella.jersey.first package. -->
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>test.services</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
 </servlet-mapping>
</web-app> 


TestRestModel.java

package test.model;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class TestRestModel{

    /**
     * 
     */
    private static final long serialVersionUID = -8391589100962515747L;
    private String name;
    private String content;

    public TestRestModel(String name, String content){
        this.name = name;
        this.content = content;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}


测试资源.java

package test.services;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import test.dao.TestModelDao;
import test.model.TestRestModel;

@Path("/test")
public class TestResource {

    @GET
    @Path("{id}")
    public Response getModel(@PathParam("id") String id){
        return Response.ok().entity(TestModelDao.instance.getModel().get(id)).build();
    }
}


TestModelDao.java

package test.dao;

import java.util.HashMap;
import java.util.Map;
import test.model.TestRestModel;

public enum TestModelDao {
    instance;

    private Map<String, TestRestModel> container = new HashMap<String, TestRestModel>();

    private TestModelDao(){

        TestRestModel model = new TestRestModel("a", "this is first");
        container.put("1", model);
        model = new TestRestModel("b", "this is second");
        container.put("2", model);
        model = new TestRestModel("c", "this is third");
        container.put("3", model);
    }

    public Map<String, TestRestModel> getModel(){
        return container;
    }
}

我对 Jersey 和 REST 完全陌生。我还不知道如何记录泽西岛的错误。


当您没有为 JAXB bean 提供默认的无参数构造函数时,就会发生这种情况。因此,在您的情况下,您应该通过添加一个来修改该类:

  public TestRestModel(){

    }

这是由于以下要求JSR-222:

由用户编写的现有类型需要提供无参数 构造函数。解组器在执行期间使用无参数构造函数 解组以创建该类型的实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey 在尝试返回 XML 响应时返回 500 的相关文章

随机推荐

  • 使用 NSDateFormatter 进行日期格式化的问题

    我有一个日期字符串 我想将其转换为另一种格式 原始日期字符串示例是 2013 06 04 02 19 21 0000 我想将其转换为 6 月 4 日 星期三 NSString date string 2013 06 04 02 19 21
  • Java中如何防止ArrayList中的元素被删除?

    我想要一个ArrayList 并限制元素脱绒 我该怎么做 创建一个包装器List不允许删除的接口 只允许删除所需的方法 class MyArrayList
  • 触发事件 WPF 的计时器

    我这里有一个项目 它默认设置由 MouseEnter 事件发生操作 我的意思是 打开一个窗口 关闭 返回等等 仅通过 MouseEnter 事件发生 我被要求在 3 秒后触发事件 这意味着用户将鼠标放在控件上 仅在 3 秒后 窗口中的所有控
  • 如何在codeigniter中使用ajax上传文件

    我正在尝试使用 ajax 上传文件以及其他参数 但是 文件没有上传 表格代码
  • 如何在C中迭代字符串?

    现在我正在尝试这个 include
  • ANSI 颜色转义序列列表

    在大多数终端上 可以使用以下命令对输出进行着色 033ANSI 转义序列 我正在寻找所有支持的颜色和选项 例如明亮和闪烁 的列表 由于支持它们的终端之间可能存在差异 因此我主要对 xterm 兼容终端支持的序列感兴趣 您正在寻找的 ANSI
  • FFMPEG 将视频与图像叠加会删除音频

    我使用以下命令从给定的视频和图像生成视频 我还填充和缩放视频 这个命令效果很好 它生成了预期的结果 但是在结果视频中没有声音 ffmpeg exe i input mp4 i rj2k15y3 png filter complex 0 v
  • 根据类型类设置抽象类型

    我有一个这样的例子 abstract class IsBaseTC A type Self abstract class JustHoldsTypeMember A extends IsBaseTC A implicit val doubl
  • 活动未延伸至横向切口下方

    在我的活动中 我使用以下代码打开 关闭全屏 我所说的全屏是指隐藏 显示状态栏 该问题发生在具有切口 有摄像头的地方 且状态栏可见且处于横向状态的设备上 当状态栏隐藏或 和处于纵向时它会延伸 if aStatus Hide getWindow
  • Bash 脚本让用户从列表中选择或输入自己的

    我有一个简单的脚本 我想列出一些预先填充的选项 或者让用户输入一个与构建相关的数字 这就是我目前所拥有的 read p Please select from the list below or enter the build number
  • Dapper 源代码 - 这会正确处理我的连接吗?

    查看 Dappers QueryAsync 方法的源代码 SqlMapper Async cs private static async Task
  • iOS 如何通过宏检测iPhone X、iPhone 6 plus、iPhone 6、iPhone 5、iPhone 4?

    如何通过宏检测设备型号 我使用过类似的东西 但模拟器上的结果总是 IS IPHONE 5 define IS IPAD UI USER INTERFACE IDIOM UIUserInterfaceIdiomPad define IS IP
  • 包含宏的 C++ 方法声明

    我正在使用 QuickFAST 库 在检查它时我发现了这个类声明 但我似乎并没有真正理解 我的意思是类名之前的宏名称是什么意思 class QuickFAST Export Message public FieldSet 我还发现了这个声明
  • Swift 动态变量名称取决于值

    我有一个像这样的变量名称列表 BankHelper swift static var va 1 atm ol li Silahkan kunjungi ATM terdekat li li Pilih Menu strong Transak
  • 使用内联汇编修改数组元素

    有没有办法通过内联汇编修改特定的数组元素 int move 2 我正在寻求改变move 0 and move 1 in asm 我是汇编编码的新手 主要坚持C 可能有一个非常简单的答案 到目前为止我已经尝试移动move 1 到寄存器中 将我
  • 单击链接不应触发家长 onclick 事件

    我有以下代码 div some text a href asd php click a div 当有人点击链接时 就会触发 javaschipt 事件 我希望该事件仅在有人单击文本或 div 容器内的空白区域时触发 如果有人点击链接则不会
  • 使用 cx-freeze 时没有名为 bs4 的模块

    我正在尝试使用以下命令将我的 python 脚本转换为适用于 Windows 的独立可执行文件CX 冻结 为此 我刚刚输入了这个命令cxfreeze PlaylistDownloader py PlaylistDownloader py 是
  • 如何在具有枚举字段的实体上使用 JPA CriteriaQuery 填充 DTO 类字符串字段?

    我正在使用 JPA Criteria API 在查询多选中我想检索枚举属性 而不是枚举本身 这是我的查询 final CriteriaQuery
  • Swift + didUpdateUserLocation 没有被调用

    我无法打电话MKMapView委托方法didUpdateUserLocation 到目前为止我做了什么 添加框架MapKit framwork在项目中 在视图控制器中导入框架import MapKit line 在plist文件中添加密钥
  • Jersey 在尝试返回 XML 响应时返回 500

    我正在尝试使用基于 Jersey 2 12 创建自己的 RESTful WS 应用程序this文章 我想根据从 url 传递的 id 返回一个类的 XML 表示形式 但是 在尝试从以下任一位置尝试时 我收到了 500 响应代码高级休息客户端