質問

Java Webサービスを作成し、Tomcatに展開し、Webbrowserを介してサービスWSDLにアクセスしました。次のステップは、クライアントがウェブサイトと通信するために使用できるプロキシクラスを生成することでした。これが私が次にしたことです:

私のWSDLがアクセス可能であると仮定しましょう。 http:// localhost:8080/testsvc/testsvc?wsdl

wsimportツールを使用して、次のコマンドを使用してプロキシを生成します。$> wsimport http:// localhost:8080/testsvc/testsvc?wsdl

問題は、LocalHost:8080が生成されたクラスでハードコードされ、8080以外のポートにサービスを展開すると、クライアントがポート8080でサービスにアクセスしようとするため、クライアントが到達できないことです。

とにかく、ポート番号がハードコードされていない方法でプロキシクラスを開発することはありますか?サービスを任意のポートに展開できるようにしますか?

EndPoint_Address_Propertyを更新しようとしましたが、プロキシクラスのインスタンスがインスタンスになった瞬間にコードが失敗するため、それは役に立ちません。プロキシクラスから準備ができていることをEndPoint_Addressを上書きすることができるポイントに実際に到達することはありません。

役に立ちましたか?

解決

1つの方法は、WSImportパラメーターを使用することです

-wsdllocation <location>

そして、それをあなたの新しいWSDLに向けてください。

または、を使用できます

-カタログ オプション。

アドレスを変更するには、次のようなコードを動的に使用します。

service = new Service();
port = service.getxxxPort();

((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, newUrl);

他のヒント

使用 -keep パラメーター WSImportが生成するソースファイルを保持するため。そこから、必要に応じてWSIMPORTが生成したソースコードのエンドポイントURLを変更できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top