2

Webサービスのデプロイについて簡単な質問があります。現在、2つのendPointがあります。以下を参照してください。

Endpoint.publish("http://localhost:8000/eCalcWS/eCalc", new eCalc());

Endpoint.publish("http://localhost:8001/eCalcWS/eCalc_service", new eCalc_service());

同じアドレスに2つのWebサービスを置くことは可能ですか?どうすればいいですか?

4

1 に答える 1

2

残念ながら、あなたが望むようにすることはできません。
各エンドポイントが Web サービス実装者に関連付けられるように設計されています。スペック
から:

Endpoint クラスを使用して、Web サービス エンドポイントを作成および公開できます。エンドポイントは、Web サービスの実装 (ここではインプリメンターと呼びます) として機能するオブジェクトと、バインディングなどの構成情報で構成されます。

そして公開時(私の強調):

publish(String address, Object implementor)指定された implementor
の Endpoint を作成して公開します。バインディングは、提供されたアドレス (URL である必要があります) の URL スキームに基づいてデフォルトで選択されます。適切なバインディングが見つかった場合、エンドポイントが作成され、Endpoint.publish(String address) メソッドが呼び出されたかのように公開されます。作成されたエンドポイントは、メソッドの値として返されます。

私もかなり前にこの問題に遭遇したことを覚えています.2〜3の異なる実装を異なるURLに関連付ける必要があり、それは不可能でした(アドレスは既にバインドされているというエラー)。
思い出すと、これを回避する方法は、独自のディスパッチャを作成することでした。
複数のエンドポイントに対する Web サービス リクエストを受け入れるエンドポイントを公開し、そのリクエストを対応する実装にディスパッチしました。SOAP メッセージに直接取り組みました。
しかし、xml メッセージは非常に単純で非常に少ないので、私には可能でした。
Web サービスの実装が自明ではなく、メッセージが複雑であり、エンドポイントが実際にはシンプルなものを展開するだけであるため、多くのクライアントが予想される場合は、さまざまなエンドポイントで公開することをお勧めします。ボンネットの下の http サーバー。

于 2012-11-05T20:52:51.010 に答える