0

見出しで述べたように、JAVA アプリケーションをリモート Web サービスに接続しようとしています。私は、JAVA と Web サービスについてはまったくの初心者です。私はEclipse IDEを使用しています。

私が最初にしたことは、コマンド ウィンドウでwsimportを実行することでした。WSDL URL を提供しましたが、エラーが発生しました: FAILED, Could not find WSDL . URLが正しいことを確認するために何度もチェックしました。

回避するために、WSDL をローカルに保存しましたが、wsimport には問題はありませんでした。生成されたすべてのコードをプロジェクトに移動しましたが、すべて問題ないようです。

これが私のテストコードです

// HAVE TO USE PROXY
final String authUser = "xxxxxx";
final String authPassword = "xxxxxx";
String proxyServer = "proxy1.xxxxx.com";
String proxyPort = "99999";

System.setProperty("http.proxyHost", proxyServer);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("http.proxyUser", authUser);
System.setProperty("http.proxyPassword", authPassword);

Authenticator.setDefault(
   new Authenticator() {
      public PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(authUser, authPassword.toCharArray());
      }
   }
);

WebServiceXX client = new WebServiceXX();
WebServiceXXSoap port = client.getPort(WebServiceXXSoap.class);

BindingProvider bp = (BindingProvider)port;
Map<String, Object> req_ctx = bp.getRequestContext();

req_ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://domain.com/WebService/WebServiceXX.asmx");
req_ctx.put(BindingProvider.USERNAME_PROPERTY, "user");
req_ctx.put(BindingProvider.PASSWORD_PROPERTY, "password");

//HERE, TRYING TO CALL SERVICE. GETTING TIMEOUT ERROR IN 2nd LINE
WebServiceXXSoap service = client.getWebServiceXXSoap();
OperationStatusCodesResp StatusCodes = service.GetOperationStatusCodes();

つまり、プロキシ サーバーを使用する必要がありました。その部分をテストしましたが、問題ないようです。ローカルの WSDL を使用したので、ENDPOINT URL を手動で設定する必要があると思います。また、認証が必要なため、コードでわかるようにユーザー名とパスワードを設定する必要がありました。

私が得ているエラーはTime Out Errorです。この ENDPOINT を適切に設定していない可能性があり、適切な Web サービス URL が提供されていないため、その要求を行うことができないと考えています。

生成された Java ファイルの 1 つで wsdlLocation を編集して、ローカル パスを実際の WSDL URL に置き換えようとしましたが、WSDL が見つからないというエラーが発生しました。JAX-WS は単純にこの WSDL を嫌うか、別の何かに問題があります。なお、このサービスを .NET (C#) アプリケーションで利用しても問題はありませんでした (Web サービス自体は .NET、WSE 2.0 で行われます)。

何か案は?

ありがとう

4

1 に答える 1

1

wsdlLocationof@WebServiceClientアノテーションと変数を to に変更してみてくださいbaseUrl

https://domain.com/WebService/WebServiceXX.asmx?WSDL

認証 (基本) については、JAX-WS (クライアント) を使用した HTTP 基本認証で適切なガイドを見つけることができます。

編集

プロジェクトで WSDL をローカルに保存することを試すことができます。クライアントを生成するには、WSDL ファイルをフォルダーに配置し、ターミナル o シンボル システムを使用してフォルダーに移動し、PATHfor ポイントbinを JDK のフォルダーに設定wsimportし、ローカルの wsdl ファイルを使用します。

Java 6 と JAX-WS - Wiki - Confluenceを使用した Web サービスの使用の例を参照してください。

次に、「エンドポイント アドレスと HTTP 基本認証の指定」セクションの方法を使用できます。

于 2013-01-18T00:44:33.243 に答える