7

schemaLocation をリモートではなくローカルで解決するために、.war ファイルに jax-ws-catalog.xml を追加しました。私はの例に従いました

Metro ユーザー ガイド: 2.10。ローカルにパッケージ化された WSDL を使用したクライアント アプリケーションの開発

.war をデプロイし、soapUI を使用して Web サービスを検証すると、schemaLocation にアクセスしようとしてスタックします。http://somehost:8080/CMDB/schemas/common/1.0/CMDBCommonTypes.xsd

スキーマと wsdl の両方が Eclipse で検証されます (Eclipse 用の XML カタログ ツールを使用)。(私の jax-ws-catalog.xml と関連する xsd および wsdl の内容が役立つ場合は投稿できます。

Google 検索では、jax-ws-catalog.xml が Metro スタックで機能しないという他の多くの問題が見つかりました。

Metro で動作するように jax-ws-catalog.xml を取得した人はいますか?

4

1 に答える 1

16

jax-ws-catalog.xmlとWSDLファイルをどこに配置しますか?

WARを使用しているとのことですが、WAR内でのjax-ws-catalog.xmlの場所は、WSクライアントとしてアクセスしようとしているのかWSエンドポイントパブリッシャー(サーバー)としてアクセスしようとしているのかによって異なります。

WAR内から外部Webサービスにアクセスしている場合は、jax-ws-catalog.xmlをapp.war / WEB-INF / classes / META-INFディレクトリに配置する必要があります。または、最初のWebサービスを契約している場合アプリ内にデプロイされ、@ WSDLLocationアノテーションが付いている場合、そのWSDLについて、jax-wsはapp.jar/META-INFでjax-ws-catalog.xmlを検索します

したがって、クライアントのWSDLロケーションの場合app.war / WEB-INF / classes / META-INF /jax-ws-catalog.xml@WSDLLocationアノテーションが付いた最初のWSエンドポイントの契約app.war/META-INF

Webサービスの公開(最初に契約)と利用の両方を行う場合は、jax-ws-catalog.xml + WSDLを両方の場所(app.jar / WEB-INF / classes /)に配置する必要があります。 META-INFおよびapp.jar/META-INF

私は、Webサービスの公開と利用を同時に行う多くのプロジェクトで上記のアプローチをうまく使用しており、期待どおりに機能することを保証できます。

于 2011-04-05T14:32:24.643 に答える