2016-09-14 3 views
2

多くのアプリケーションからSOAPメッセージとRESTメッセージの両方を処理するアプリケーションで作業しています。私たちはCamelを使ってSOAP経由でメッセージを他の場所にルーティングします。元の場所に基づいてメッセージに対処する必要があります。メッセージが送信された場所からURIを特定することは可能ですか?私はまだウェブサービスを学んでおり、私のGoogle検索では何も教えてくれません。Webサービス:メッセージを送信したエンドポイントを検出するにはどうすればいいですか?

コードをデバッグする際に、Camel ExchangeオブジェクトにfromEndpointというオブジェクトが見つかりました。私のテストでは、私はSoapUIを使用しています。 fromEndpointオブジェクトには、 "direct:// MessageName"が含まれています。これには、別のサーバーからの情報が正しいのでしょうか?それが正しい場合、正しい情報を入れるようにSoapUIを構成することは可能ですか?メッセージの形式を規定する

*追加情報*

WSDLとのXSDは、他の場所で制御されています。それらの変更プロセスは長く複雑です。 (すでにWSDLへの簡単な変更を求める要求があり、承認される1〜2年前です)メッセージはさまざまなアプリケーションによって生成されます。うん、それは悪夢です。だから私たちは現在の状況の中でそれを実現させる方法を見つけなければなりません。私は本当に解決策が不可能かもしれないと心配していました。メッセージが入ってきたときにインフラストラクチャー(SOAPやREST)がメッセージ自体に物理的に入れなくてもどこから来たのかわからないということは信じられません。

答えて

1

私はここで私の問題に対する答えをついに見つけました。 WebServiceContextをControllerオブジェクトに注入することができます。これにより、HttpServletRequest、したがってそのトランザクションのリモートホストとリモートアドレスを取得できます。

私は私のコントローラクラスに

@Resource 
WebServiceContext wsContext; 

を追加しました。次に、getServletRequestObjectメソッドを追加しました。

リクエスト情報が必要な場合は、そのメソッドを呼び出します。

素晴らしいです!

0

Exchangeヘッダーまたはプロパティを追加することをお勧めします。メッセージを送信する直前にプロパティにエンドポイント名を入力してください。次のエンドポイントで検索できるようにします。

+0

これは、通常は私がやったことでしょう。しかし、私に届いているメッセージの形式は管理組織によって決定され、変更はほとんど承認されません。あなたはそれがどうなるか知っています。 ITの中には、最終的な顧客の指示によって制限されることもあります。 – OldGuy

0

元のサーバーのURLを取得できるものは何も見つかりません。だから、この時点で、質問に答えられないままにするのではなく、私は明らかな答えでそれを更新しています。いいえ、これは不可能です。

関連する問題