見出しで述べたように、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 で行われます)。
何か案は?
ありがとう