JBossをネットワーク経由で動作させることに少し問題があります。簡単な概要として、開発ネットワーク(DEVと呼ぶ)とクライアントネットワーク(CLIENT!と言う)があります。これらはファイアウォールを介して接続されます。 Devネットワークでは、サーバーは192.168.100.50と呼ばれ、クライアントネットワーク上では10.0.100.50と呼ばれます。両方のネットワークのDNSは、DNS(sqlserver.dev.net)によって関連するIPを解決します。JBoss UnknownHostExceptionが異なるネットワーク上にある場合
sqlserverは2つのサービスを提供します.1つは.NET Webサービス経由で、もう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);
}
例外がある:不明なホスト:場合SQLserver
ルート例外はjava.rmi.UnknownHostExceptionです
クライアントが 'sqlserver'に接続しようとしていることが問題であることを確認できますドメイン名。これは、 'sqlserver'をクライアントのホストファイルに追加することによってテストされています。正常に動作します。さらに、「SQLserver」のスペルは面白いです。これは、WindowsホストがDNSに格納されている方法ではなくホスト名を報告する方法であるためです。私の推測では、クライアントが最初の接続を確立すると、JBossは、クライアントが将来解決することができない「SQLserver」に接続するようにクライアントに指示します。
私はすでにのSQLServerのFQDNに以下のシステムプロパティを設定しようとしました:
jgroups.bind_addr
bind.address
java.rmi.server.hostname
ん誰にでもアイデアはありますか?