そのため、多くの調査の後、最終的に問題が何であるかを突き止めました。http から https へのリダイレクトが原因でした。Web で見つけた記事 (もう URL を思い出せません) によると、wsdl2javaおよびwsimportスタブ ジェネレーターが Web サービス通信を行うために使用するライブラリは、セキュリティ上の理由により、http から https へのリダイレクトに従うことを許可していません。
したがって、https wsdlの場所からスタブを生成していたとしても. https://wsdl.location.com?wsdl 、Web サービス呼び出しを行うコードを実行したとき、 http: //wsdl.location.com への呼び出しを試みていたため、https:/へのリダイレクト要求が発生しました。 /wsdl.location.com ですが、http ライブラリではそれが許可されていません。したがって、例外として 302 http コードを転送するだけです。
また、2 つの Web サービス URL があります。1 つは、通常の http url であるテスト サービスであり、https を介した運用サーバーがあります。したがって、これを回避するには、BindingProviderクラスを使用して、指定したエンドポイント (現在は https アドレス) を使用するようにサービスをオンザフライで構成するだけです。これにより、呼び出す環境に応じてその場で指定することもできます。つまり、テスト URL を使用するか、実動 URL を使用するかです。
NotificationWebService service = new NotificationWebService();
NotificationWebServiceSoap serviceSoap = service.getNotificationWebServiceSoap();
BindingProvider bindingProvider = (BindingProvider) serviceSoap;
bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://wsdl.location.com");
String xmlString = serviceSoap.getRSAPublicKeyXMLString();
つまり、誰かがこの問題に遭遇した場合。ポイントする必要があるエンドポイントが https 上にあるかどうか、https リダイレクトを要求する http 呼び出しではなく、直接の https 呼び出しを行っていることを確認してください。これは、デバッグ中にserviceSoapを調べることで確認できます。呼び出し元の URL が示されます。
スタブを生成するようにwsdl2javaとwsimportを構成し、スタブが https 呼び出しを使用するように強制するオプションを調べたり、使用したりしませんでした。これにより、さまざまな環境に複数の URL エンドポイントを構成できるようになりました。