我需要将一个 XML 文件从一个应用程序输出到另一个应用程序,但我不想在某处写这个 XML,然后在另一个应用程序上读取这个文件。
两者都是 Java 应用程序,并且(到目前为止!)我正在使用 XStream。
我该怎么做?
注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB (JSR-222)专家组的成员。
JAXB (JSR-222)是Java API for RESTful Web Services (JAX-RS)的默认绑定层。这意味着您可以只创建一个返回 POJO 的服务,并且将为您处理所有到/从 XML 转换。
下面是一个示例 JAX-RS 服务,它查找Customer
使用 JPA 的实例并将其返回到 XML。JAX-RS 实现将利用 JAXB 自动进行实际转换。
package org.example;
import java.util.List;
import javax.ejb.*;
import javax.persistence.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Stateless
@LocalBean
@Path("/customers")
public class CustomerService {
@PersistenceContext(unitName="CustomerService",
type=PersistenceContextType.TRANSACTION)
EntityManager entityManager;
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("{id}")
public Customer read(@PathParam("id") long id) {
return entityManager.find(Customer.class, id);
}
}
完整示例
对于重负载的应用程序,另一种方法是使用 google ProtoBuf而不是 XML 格式 - 这可以让您最大限度地减少应用程序之间的流量并提高性能。从我的角度来看,用于数据传输的 XML 不是一个好主意。