在jax-rs Rest端点中使用JAXB序列化XML有效负载

时间:2015-09-23 15:51:53

标签: java jaxb jax-rs

好的,所以我使用jaxb从我的xsd文件中学习了我的java类。我还将以下代码编写为接收请求(XML)的端点。现在我想将请求读入我的java对象,然后我可以使用它们插入到我的数据库中。这是我应该实现的正确方法吗?如果是这样,它是如何完成的?谢谢

@POST
@Consumes("application/xml")
@Produces("application/xml")
public String registerPost(@Context HttpServletRequest req) {

    try {
        //update DB
    } catch (DatabaseException e) {
        return "Fail";
    }

}

1 个答案:

答案 0 :(得分:1)

希望这有点帮助:

  • 您的jax-rs端点可以直接接受您的JAXB类(假设您的服务器已配置了JAXB提供程序)。它将为您处理从传入文本到适当的Java对象的转换。

  • 您并不特别需要Servlet请求对象。

  • 您可能需要先将JAXB实体转换为JPA实体,然后才能将它们保存到数据库中(或将JAXB和JPA注释添加到相同的类中)。

  • 您的返回类型应该是text / plain而不是XML(或者您应该返回XML)。

    @POST
    @Consumes("application/xml")
    @Produces("text/plain")
    public String registerPost(MyEntityClass payload) {
    
     try {
         //update DB
         myService.save(payload);
         return "success";
     } catch (DatabaseException e) {
         return "Fail";
     }
    
    }