【发布时间】:2013-01-05 14:03:23
【问题描述】:
我需要将一个 XML 文件从一个应用程序输出到另一个应用程序,但我不想将这个 XML 写入某个地方,然后在另一个应用程序上读取这个文件。
两者都是 Java 应用程序,并且(到目前为止!)我正在使用 XStream。
我该怎么做?
【问题讨论】:
我需要将一个 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 服务,它使用 JPA 查找 Customer 的实例并将其返回到 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 数据转移不是一个好主意。
【讨论】: