1

WSDLから作成したWebサービスを公開すると、公開後に作成されるWSDLが元のWSDLと異なります。違いは、公開後に作成されたWSDL / XSDには、すべてのルート要素をラップする追加の要素(ARG0)が含まれていたことです。

上記の理由により、元のWSDLと公開後に作成されたWSDLが同じではないため、元のWSDL/XSDをクライアント開発者と共有できませんでした。

私はプログラミング言語としてJavaとJAX-WSを使用しています。

API javax.xml.ws.Endpointを使用して、アプリケーションサーバーを必要とせずにWebサービスを公開します。

Endpoint.publish(url、webserviceinstance)

前もって感謝します。

4

3 に答える 3

1

問題は不必要なラッピングの問題であるため、注釈のラッピングに焦点を合わせました。最終的に、この問題に関連する注釈があることがわかりました。クラスの先頭に次のアノテーションステートメントを追加したところ、問題は解決しました。

@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
public class WebServiceHandler implements WebService {
//....
}

これからは、元のWSDLからデプロイされたマシンに作成されたリクエストを成功させることができます。

于 2012-09-07T07:01:17.463 に答える
0

wsdlを投稿すると、より適切な評価を行うことができます。予期しないラッパーが表示されていることを考えると、jax-wsは元のwsdlを意図したものとは異なる方法で解釈していると思います。ここのページ(http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/)では、さまざまなwsdl構成について説明しています。私の提案は、soapベースのサービスの主流であるため、ドキュメント/文字/ラップされた規則を使用するための指示に従うことです。

@Webserviceアノテーション属性を使用してこれらを特定の値に強制しない限り、結果の公開されたwsdlは、サービス名、ポート名、または名前空間の点でまだ少し異なる可能性がありますが、公開されたwsdlをあなたのクライアントと成功を期待しています。

于 2012-09-06T04:14:13.443 に答える
0

このタイプの問題の最も一般的な理由は、Webサービスを実装するクラスに正しい属性を持つ@WebServiceアノテーションがないことです。endpointInterface実際、WSDLから生成されたエンドポイントインターフェイスを実装するだけでは不十分です。

于 2012-09-06T19:15:43.263 に答える