あるアプリケーションから別のアプリケーションに XML ファイルを出力する必要がありますが、この XML ファイルをどこかに書き込んでから、別のアプリケーションでこのファイルを読み取る必要はありません。
どちらも Java アプリケーションで、(今のところ!) 私は XStream を使用しています。
どうすればいいですか?
注: 私はEclipseLink JAXB (MOXy)のリーダーであり、JAXB (JSR-222)エキスパート グループのメンバーです。
JAXB (JSR-222)は、 Java API for RESTful Web Services (JAX-RS)のデフォルトのバインディング レイヤーです。これは、POJO を返すサービスを作成するだけで、XML との間のすべての変換が処理されることを意味します。
Customer
以下は、 JPA を使用するインスタンスをルックアップし、それを XML に返す JAX-RS サービスの例です。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);
}
}
完全な例
負荷の高いアプリケーションの別のアプローチは、XML形式の代わりにgoogle ProtoBufを使用することです。これにより、アプリケーション間のトラフィックを最小限に抑え、パフォーマンスを向上させることができます。私の観点からは、データ転送用のXMLはお勧めできません。