必要なエンティティごとにラッパークラスを作成せずに、jax-rsクライアントでjax-bを使用してエンティティのリストをマーシャリングする必要があります(多数のエンティティがあります!)。このサービスでは、次のような顧客のリストを整理できることに気付きました。
<customers>
<customer>.....</customer>
<customer>.....</customer>
</customers>
クライアント側の私は、すべての顧客ノードを見つけてそれらを手動でリストに追加することにより、マーシャリングを解除できます。(これを行うためのより良い方法があると思いますか?)
さて、ここでの本当の問題は、エンティティ(顧客など)のリストをサービスに送信したい場合です。この文字列をサービスへのリクエストのペイロードとして書き込む前に、このリストをxml文字列にマーシャリングしたいと思います。java.util.Listまたはその子孫はマーシャラーに認識されていないため、これは機能しません。
javax.xml.bind.Marshaller.marshal(list, StringWriter);
javax.xml.bind.Unmarshaller.unmarshal(org.w3c.dom.node)
どんな助けでも大歓迎です!
ありがとう!-Runar
編集:
顧客クラスのスニペットは次のとおりです。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer implements Serializable {
private String name;
.....
}
標準実装の一部ではないサードパーティライブラリを使用せずに軽量クライアントを作成しようとしています。このため、ペイロードオブジェクトを取り込んでマーリングし、リクエストのペイロードに渡す独自のhttpclientを作成しました。応答を受信したら、xmlを読み取り、アンマーシャリングに送信します。jax-rsサービスと同じように、文字列との間で直接マーシャリング/アンマーシャリングを実行できるとしたら、それは恐ろしいことです。