6

ApacheCXFを使用してクライアントスタブを生成する方法を知っています。ただし、生成されたクラスを実行しようとすると、JAXWSが使用されます。また、生成されたクラスのインポートクラスはjavaxパッケージからのものであることに気付きました。JAXWSライブラリの代わりにApacheCXFライブラリを使用するように生成されたクラスを設定するにはどうすればよいですか?

以下は、クライアントスタブを生成するために使用するコードです。

wsdl2java -frontend jaxws21 -wsdlLocation "META-INF/wsdl/WSCustom.wsdl" -client -d C:\Workspace\WSClient\META-INF\wsdl\ "C:\Workspace\WSClient\META-INF\wsdl\WSCustom.wsdl"
4

1 に答える 1

6

スタブは正しいです。CXFが必要とするすべての情報はJAX-WS標準アノテーションを使用して表すことができるため、スタブにCXF固有のインポートが含まれていてはなりません。実行時に、CXFクライアントライブラリがクラスパス上にある場合は使用され、CXFが使用できない場合はJDKに組み込まれているRIライブラリが使用されます。生成されたスタブはどちらでも機能します。

クライアントを実行しているだけの場合に必要なCXFJARについてコメントで質問しました。私が知る限り、それはただのcxf-rt-frontend-jaxws推移cxf-rt-transports-http的な依存関係です。プロジェクトがmavenでビルドされている場合は、これら2つの依存関係を宣言するだけで、他のすべてが自動的に入力されます。そうでない場合は、ApacheIvyメインJARをダウンロードして実行します。

java -jar ivy-2.3.0.jar -dependency org.apache.cxf cxf-rt-frontend-jaxws 2.7.3 -retrieve "[artifact]-[revision](-[classifier]).jar"
java -jar ivy-2.3.0.jar -dependency org.apache.cxf cxf-rt-transports-http 2.7.3 -retrieve "[artifact]-[revision](-[classifier]).jar"

これにより、推移的な依存関係が解決され、関連するJARがMavenCentralから現在のディレクトリにダウンロードされます。

于 2013-03-04T08:20:53.020 に答える