6

JMS ブローカーを介してさまざまなクライアントから JMS メッセージとして渡された要求をさまざまなサーバー プロセスが処理しているシステムがあります。

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

明確化: 不明なユーザーによってクライアントが既にデプロイされているため、メッセージ クラスの変更を回避しようとしています...

4

7 に答える 7

3

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

たとえば、Apache ActiveMQ で有効にする方法は次のとおりです。

于 2008-11-10T10:55:33.130 に答える
1

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

メッセージの送信元に返信する必要がある場合は、送信者に「JMSReplyTo」プロパティを設定して、その宛先に返信してもらうことができます。

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

于 2008-11-07T01:18:38.957 に答える
0

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

于 2008-11-07T03:51:32.190 に答える
0

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

// client code
String myIPString = ...;
Message m = session.createTextMessage();
m.setStringProperty("IPOfSender", myIPString);
...
于 2008-11-07T03:51:55.557 に答える
0

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

于 2008-11-07T04:52:44.453 に答える
0

グラスフィッシュを使用して、メッセージの getJMSMessageID() を見ると、「ID:40-192.168.0.242(f5:62:c6:58:22:6f)-52506-122885191641」という文字列が表示されるはずです。 . IP がメッセージ ID の部分文字列であるかのように見えます。

これは私たちのセットアップで確認できるものであるため、他の要因 (春など) が関係している可能性がありますが、文字列がプログラムによって作成されたものではないことはわかっています。

于 2008-12-09T21:19:32.227 に答える
-1

短い答え: いいえ

于 2009-01-02T16:06:08.463 に答える