1

RAD 8 で開発中の jax-ws クライアントがあります。この JAR を渡すだけで、クライアントをアプリで利用できるようにしたいと考えています。そこで、Java プロジェクトを作成し、クライアントを生成してから、その周りに小さなラッパーを書いて「きれいに」しました。

これをWebアプリに配布しましたが、動作し、すべて問題ありません。しかし今、サービスとクライアントに WS-Transaction のような「ポリシー セット」を追加しています。結局のところ、単純な Java プロジェクトは Web サービス クライアントの適切な「プロジェクト ファセット」をサポートしていないため、それを行うことはできません。これらのファセットを jar に設定して渡すことができるのは、どのようなプロジェクトですか? Webアプリケーション内で実行できることはわかっていますが、ユーザーが生成を実行する方法や生成されたクライアントを使用する方法を知る必要はありません(ユーザーフレンドリーではありません)。

- Web サービス クライアント jar がポリシー セットを取得できるのは、どのタイプのプロジェクトですか? - プロジェクトがすでに存在している場合、プロジェクトのタイプを変更するにはどうすればよいですか? プロジェクトは既にソース管理されており、全体を再作成する必要はありません。

4

1 に答える 1

0

特定のアプリ サーバーについて言及していないので、WAS の観点からお答えします (それが私が知っていることであり、あなたが使用していると推測するものだからです)。

ポリシー セットとバインディングを使用してサービス クライアントを構成するには、クライアントをコンテナー管理コンポーネントに注入 (@WebServiceRef アノテーション) する必要があります。これは、サーブレット、ポートレット、EJB などです。各アプリケーションは、ポリシー セットとバインディングをクライアントのインスタンスに適用する必要があります。したがって、基本的には、それを使用している人が構成する必要があります。一度だけではなく、みんなで共有します。あなたがしようとしている方法ではありません。

以前、あるプロジェクトで問題に遭遇しました。私の解決策は、EJB を、クライアント インスタンスを注入するコンテナー管理コンポーネントとして使用することでした。EJB コンポーネント用にクライアントを 1 回構成します。次に、EJB は、サービス API メソッドのダム ファサードを実装するだけです。その後、すべてのサーブレットは EJB への参照を取得し (追加のインジェクションまたは JNDI ルックアップのいずれかを介して)、EJB を介してサービス クライアントを呼び出します。サービス呼び出しを行うためだけに余分なレイヤーになりますが、これは、サーブレットごとに個別に 1 回ではなく、すべてのサーブレットに対して 1 回クライアントを構成することを意味します。

于 2013-06-24T22:27:44.283 に答える