2009-05-08 7 views
3

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

ん誰にでもアイデアはありますか?

答えて

6

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

0

あなたのネットワークにプロキシサーバーがある場合、そのプロキシサーバーのIPとプロキシポートをプロパティにチェックする必要があります。

関連する問題