1

私はSOAP Webサービスに非常に慣れていません。いくつか知りたいことがあります。WSDL で言及されている「soap:address location」として新しい IP アドレス (たとえば B) を見つけましたが、この URL は A とはまったく異なります。私の質問は、なぜ B アドレスが必要なのかということです。これは常駐するマシンの内部 IP アドレスですか? A の背後にあり、クライアントからは完全にアクセスできません。流れは?

  1. A は公開されていないため、ホストは WAN IP にアクセス許可を与えて、A にアクセスできるようにしました。これで、単純な Java コードから A の URL (WSDL コンテンツを取得) にアクセスできます。

    URL オラクル = 新しい URL(A);

    URLConnection yc = oracle.openConnection(proxy);

私はプロキシファイアウォールの背後にいるので。しかし、私は

URLConnection yc = oracle.openConnection();

このことから、Java はデフォルトで、マシンのデフォルトのプロキシ設定をバイパスして任意の URL に接続しようとしていると結論付けることができますか?

  1. WSDL URL からクライアント スタブを生成したところ、A の注釈が付けられていることがわかりました。

    @WebServiceClient(name = "BDCDataExchange"、targetNamespace = "何らかの URL"、wsdlLocation = "A"

しかし、私がコードを実行しているとき、それは与えています

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection timed out: connect
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)

単純な Java コードから A にアクセスできるので、この例外は、内部の soap:address B にアクセスできないことを意味しますか?

しかし、次のようなローカル WSDL パスを使用してクライアントを生成すると、同じクライアント コードが機能します。

wsimport A   //not working while executing, above exception comes
wsimport <a local path where I saved the WSDL file>  //it works when I run
4

0 に答える 0