質問

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に変更する必要があります

(ちなみに、私はこれを長い間苦労していたことを覚えており、それがどれほどイライラするかを知っています)

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