10

WSDL から wsimport を使用して生成された Web サービス実装があります。このサービスは、Spring Web アプリケーションの Tomcat サーバーにデプロイされます。スプリングの設定ファイル(webservice部分のみ)はこんな感じ

<wss:binding url="/fooService">
    <wss:service>
        <ws:service bean="#fooService">
    </wss:service>
</wss:binding>

この Web アプリケーションを Tomcat にデプロイすると、次の場所に移動すると WSDL を取得できます。

http://localhost:8080/foo/fooService?wsdl 

wsdl soap:address プロパティは次のようになります。

<service name="FooService">
    <port name="FooService" binding="tns:FooServiceBinding">
        <soap:address location="http://localhost:8080/foo/fooService"/>
    </port>
</service>

そして今のところ、それはすべて大丈夫です。

問題は、実稼働環境に Apache Web サーバーがあり、このサーバーが要求を Tomcat にリダイレクトすることです。これも機能しますが、WSDL を取得すると、soap:address はまだ localhost:8080 であり、これを Web サービスへの公開 URL にする必要があります。

何か案は?

どうもありがとうございました。

4

1 に答える 1

9

さて、私は1つの解決策を見つけました:

JAX-WSはこのプロパティを自動的に生成するようです。他のWebサービスフレームワークの実装では、ユーザーがプロパティにURLをハードコーディングすることでこれを変更できることがわかりましたが、JAX-WSではそうではないようです。誰かが何か方法があるかどうか知っていますか?

とにかく、回避策を見つけました。tomcatコネクタ構成でproxyNameプロパティとproxyPortプロパティを使用すると、プロキシ(この場合はApacheサーバー)の背後にあるTomcatに、クライアントの「実際の」ポートが80であることを伝えることができます。

この変更を行うと、自動生成されたsoap:addressに正しい値が含まれます。

参照:

于 2012-11-27T16:48:28.677 に答える