jax-wsの@UsesJAXBContextアノテーションについて質問があります。私はそれをクライアント側で動作させようとしますが、おそらく何かが欠けています。私が運転してWebサービスを持っているカスタムJAXBContextの設定方法
::私はQueueServiceとキュー(ポート)...と他のものを生成し、クライアント側で
@WebMethod(operationName = "putToQueue")
public boolean put(@WebParam(name = "queueName") String queueName, @WebParam(name = "element") Object element) {
return queues.get(queueName).offer(element);
}
... [respones要求ここに私の場合です。この場合は無関係です。] キューに入れることができるオブジェクトをユーザーが定義できるようにしたいと思います。しかし、操作を呼び出すには put(...) JAXBContextにバインドオブジェクト(送信しようとする)が必要です。私は @XmlSeeAlsoによって生成されたキュースタブの上にそれを行うことができました[私はこれを試して、それは動作します]。それでも、実行時にオブジェクトをバインドするための汎用ソリューションが必要です。 私は @QueueMessage注釈とClientJAXBContextFactoryを作成し、それを作成するときにマークされたクラスをコンテキストに追加できると考えました。
public class ClientJAXBContextFactory implements JAXBContextFactory {
@Override
public JAXBRIContext createJAXBContext(SEIModel seim, List<Class> classes, List<TypeReference> references) throws JAXBException {
Reflections reflections = new Reflections("");
Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(QueueMessage.class);
classes.addAll(annotated);
return JAXBContextFactory.DEFAULT.createJAXBContext(seim, classes, references);
}
}
次にiが生成されるキューの先頭に@UsesJAXBContext使用を試みました。
@WebService(name = "Queue")
@UsesJAXBContext(ClientJAXBContextFactory.class)
public interface Queue {
...
}
しかし createJAXBContext(...)が呼び出されていないとJAX-WSは、単に彼のJAXBContextImplを作成します。
私が読んでいる:StackOverflowの上
http://weblogs.java.net/blog/jitu/archive/2008/08/control_of_jaxb.html
http://www.techques.com/question/1-5627173/Specify-JAXB-Packages-in-SLSB-and-JAX-WS
といくつかの質問を。私は助言に感謝するでしょう。 私の質問に提示されたアイデアを実装することは可能ですか?
また、私はそれをサーバー側に追加するかもしれません... @UsesJAXBContext作品。しかし、クライアント側でそれを動作させることが重要です。