在 jax-rs Rest End Point 中使用 JAXB 序列化一个 XML 负载

Serializing an XML Payload with JAXB in a jax-rs Rest End Point

好的,所以我使用 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";
    }

}

希望这对您有所帮助:

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

  • 您不需要 Servlet 请求对象。

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

  • 你的 return 类型应该是 text/plain 而不是 XML (或者你应该 return 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";
     }
    
    }