JMSメッセージから発信元IPアドレスを取得する方法はありますか?

StackOverflow https://stackoverflow.com/questions/270788

  •  06-07-2019
  •  | 
  •  

質問

異なるサーバープロセスが、JMSブローカー経由でさまざまなクライアントからJMSメッセージとして渡されたリクエストを処理するシステムがあります。

メッセージのソースを特定しようとしています。 IPまたは発信元に関する特定の情報を取得する方法はありますか?

明確化:未知のユーザーが既にクライアントを展開しているため、メッセージクラスの変更を避けようとしています...

役に立ちましたか?

解決

JMS仕様には、 JMSXUserID と呼ばれるオプションのJMSヘッダーがあります。これは、一部のJMSプロバイダーがサポートするメッセージ(ブローカーが検証し、なりすましを防ぐために正しいことを確認する)を送信するユーザーを識別します。

たとえば、 Apache ActiveMQで有効にする方法

他のヒント

私はそうは思わない。少なくとも、方法を見つけることができませんでした。

メッセージのソースに返信を送信する必要がある場合、送信者に" JMSReplyTo"を設定させることができます。プロパティとその宛先に返信します。

または、メッセージングスキーマをわずかに変更して、ソース情報メッセージ自体を埋め込むこともできます。送信者はメッセージ内で自分自身を識別し、受信者はそこから読み取ることができます。

送信されるメッセージの構成を制御できる場合、IPアドレスをプロパティとしてメッセージにいつでも追加できます。次に、 MessageのgetStringProperty メソッド。

メッセージを送信するクライアントのコードを制御する場合、" IPOfSender"などのプロパティ名を考案し、Message.setStringProperty()ですべてのメッセージにそのプロパティを含めることができます。

// client code
String myIPString = ...;
Message m = session.createTextMessage();
m.setStringProperty("IPOfSender", myIPString);
...

JMSサーバーに依存します。一部のサーバーには、接続の詳細を表示できる管理ツール/ APIがあります。

glassfishを使用して、メッセージのgetJMSMessageID()を見ると、" ID:40-192.168.0.242(f5:62:c6:58:22:6f)-の効果を示す文字列が表示されるはずです。 52506-122885191641」。 IPはメッセージIDのサブストリングのように見えます。

これは私たちのセットアップで見ることができるので、プレイには他の要因(つまり、春)があるかもしれないことに注意してください。

簡単な答え:いいえ

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