7

Web サービス用の wsdl ファイルがあります。クライアントとサーバー間の相互作用をテストしたい。これを行うには、グリズリーが埋め込まれたモック サーバーを実行します。

モックサーバーの実装についての質問です。wsimport を使用して wsdl (および xsd) からインターフェイスを生成し、実装を記述しました。グリズリーで実行すると、次のエラーが発生します。

com.sun.xml.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(META-INF/wsdl/test.wsdl)

次のコードで Web サービスを実行します。

 HttpHandler httpHandler = new JaxwsHandler(new TestImpl());
 server.getServerConfiguration().addHttpHandler(httpHandler, "/test");

問題は、Grizzly が wsdl および xsd ファイルを見つけられないことです。埋め込まれたグラスフィッシュでその仕事。

編集1

wsdlLocation を「test.wsdl」に変更し、その作業を行います。しかし今グリズリーは言う:

java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;

EDIT2

JDK1.7 を使用すると動作します。しかし、JDK 1.6 が必要です

4

6 に答える 6

1

なぜそのエラーが表示されるのかわかりません。Grizzly jaxws の例を実行し、1.6 または 1.7 を使用して wsdl を取得できます。

例のソース1を確認し、あなたが持っているものと比較することをお勧めします。

于 2012-11-13T23:11:12.320 に答える
1

お使いのバージョンの Grizzly は JAX-WS 2.2 API を想定していますが、JDK 1.6 には JAX-WS 2.1 が同梱されています。他の人が述べたように、これらのファイルの一部は承認されたディレクトリにインストールする必要があります。必要なファイルはここからダウンロードするか、Grizzly インストールから取得できます。ダウンロードには、ファイルを JDK 承認ディレクトリにインストールするためのビルド ターゲットを提供する Ant ビルド ファイルが含まれています。で実行できますant install-api。Ant を実行できない場合は、手動でインストールできます。

cp lib/jaxb-api.jar $JAVA_HOME/lib/endorsed
cp lib/jaxws-api.jar $JAVA_HOME/lib/endorsed

自分でバグをデバッグするのが非常に難しい場合を除き、JAX-WS ディストリビューションの他のファイルを承認されたディレクトリにインストールしないでください。

$JAVA_HOME/lib/endorsed の承認されたディレクトリを使用することをお勧めします。これは、追加の変更を加えることなく、ほとんどのツールとアプリケーションで動作するためです。Maven ビルド中に承認されたディレクトリを設定したり、Tomcat によって承認されたディレクトリにファイルをコピーしたりするなど、より的を絞った変更を提案した人もいます。コードが適切な承認されたディレクトリを取得していることを確認できる限り、これらのアプローチはすべて問題ありません。

于 2016-06-15T15:11:02.700 に答える
0

endorsed というフォルダーを作成し、これらの jar ファイルをその中に入れます。作品

于 2014-07-04T07:18:40.747 に答える
0

その結果、承認されたメカニズムを使用する必要がありました。ドキュメンテーション

于 2012-11-15T08:23:56.630 に答える