リモートJMSトピックへのメッセージの送信
-
10-07-2019 - |
質問
JMSメッセージをリモートサーバーに送信するための小さなユーティリティを作成していますが、InitialContextを正しく構成できません(またはそのようです)
コンテキストを初期化するコード:
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://10.10.10.10:1099/");
Context context = new InitialContext(p);
しかし、実行すると例外が発生します:
javax.naming.CommunicationException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: connect]
だから私を困惑させているのは、10.10.10.10用に設定しているにもかかわらず、127.0.0.1イベントについて文句を言っていることです。大丈夫
任意のポインター?またはヘルパー?
解決
これは、JNDIと依存プロトコルが本質的にコネクトバックであり、後続の要求がサーバーがリッスンする必要があると考えているIPに送信されるためです。 10.10.10.10:1099にtelnetで接続し、出力を見ると、次のようなものが表示されます:
telnet 10.10.10.10 1099
[Connection message]
[Garbage]
127.0.0.1....
理由は、サーバーが127.0.0.1で「サービスを提供」しており、そのアドレスをJNDIロケーションとして返信するためです。リモートマシン上にいる可能性が高いため、リモートマシンがJbossサーバーが接続するように通知したIP(127.0.0.1)に接続しようとすると、JBossサーバーではなく自分自身に接続しようとします。
./ run.sh -b 0.0.0.0(すべてIPバインド)でjbossを起動するか、マシンのlocalhostエントリを10.10.10.10に変更する必要があります
(ちなみに、私はこれを長い間苦労していたことを覚えており、それがどれほどイライラするかを知っています)
所属していません StackOverflow