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