3

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イベントについて不平を言っていることです.10.10.10.10は生きていて、jbossを実行しています.

ポインタはありますか?またはヘルパー?

4

1 に答える 1

4

これは、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 に変更する必要があります。

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

于 2009-06-24T01:51:01.680 に答える