3

ネットワーク間でJBossを動作させるのに少し問題があります。簡単な概要として、開発ネットワーク(これをDEVと呼びます)とクライアントネットワーク(たとえば、CLIENT!)があります。これらはファイアウォールを介して接続されています。開発ネットワークでは、サーバーは192.168.100.50として知られ、クライアントネットワークでは10.0.100.50として知られています。両方のネットワークのDNSは、DNS(sqlserver.dev.net)によって関連するIPを解決します。

sqlserverは2つのサービスを提供します。1つは.NETWebサービスを介して、もう1つはJBossを介して提供されます。DEVネットワークでクライアントを実行する場合、両方のサービスが正常に機能します。CLIENTネットワーク上では、.NETサービスのみが機能します。

次のコードでContextLookupを実行しようとすると、JBossクライアントはUnknownHostExceptionをスローします。

Properties p = new Properties();
p.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
p.put("java.naming.factory.url.pkgs", "=org.jboss.naming:org.jboss.jnp.interfaces");
p.put("java.naming.provider.url", "sqlserver.dev.net:1199");

try {
  Context c = new InitialContext(p);
  cm = (ServiceRemote)c.lookup(Service.RemoteJNDIName);
} catch (NamingException e) {
  e.printStackTrace();
  throw new RuntimeException(e);
}

例外は次のとおりです。

ルート例外はjava.rmi.UnknownHostException:不明なホスト:SQLserver

問題は、クライアントがドメイン名なしで「sqlserver」に接続しようとしていることであることが確認できます。これは、クライアントのホストファイルに「sqlserver」を追加することでテストされており、正常に機能します。さらに、「SQLserver」のスペルは興味深いものです。これは、Windowsホストがホスト名を報告する方法であり、DNSに格納される方法ではないためです。私の推測では、クライアントが最初の接続を確立すると、JBossはクライアントに将来「SQLserver」に接続するように指示しますが、これはクライアントが解決できません。

次のシステムプロパティをsqlserverのFQDNに設定しようとしました。

jgroups.bind_addr
bind.address
java.rmi.server.hostname

誰かアイデアはありますか?

4

2 に答える 2

6

わかりました。起動時に0.0.0.0にバインドすると、実際には自己識別が台無しになります。sqlserver.dev.net(run.bat -b sqlserver.dev.net)へのバインドで修正されました。

于 2009-05-08T15:21:12.017 に答える
0

プロキシサーバーを備えたネットワークである可能性があります。プロパティでプロキシサーバーのIPとプロキシのポートを指定してそれらをチェックする必要があります。

于 2009-08-11T05:06:56.117 に答える