内部環境の Tomcat で Java Web サービスを実行しています。wsdlが
http://actual:8080/app/temp?wsdl
ネットワークの外部からこの Web サービスへのアクセスを提供するために、別のサーバーで Apache を使用してプロキシを作成し、ProxyPass を使用して次のようなことを行いました。
ProxyPass /app/temp http://actual:8080/app/temp
そのため、http 経由で外部から proxy/app/temp にアクセスすると、actual:8080/app/temp に転送されます。それで問題はなく、wsdlにもアクセスできます。
ただし、WSDL には、ポートの「Web サービスの場所」の「実際の」サーバーへの参照があります。これにより、クライアントから Web サービス メソッドへの実際の呼び出しが行われるときにエラーが発生します。
これを修正する方法についてのアイデアはありますか? ありがとう。
注: クライアントは Metro を使用して生成されます。以下のようなコードを使用して、クライアントで別のエンドポイントを強制する方法を見つけました。しかし、Web サービスを使用する開発者がコードに手を加える代わりに、私たちができる純粋なプロキシ ソリューションをもっと探しています。
((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://proxy/app/temp?wsdl");