質問

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

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);
}

例外:

  

ルート例外はjava.rmi.UnknownHostException:Unknown host:SQLserver

です。

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

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

  

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

アイデアはありますか?

役に立ちましたか?

解決

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

他のヒント

プロキシサーバーを持つネットワークである場合、プロパティでプロキシサーバーのIPとプロキシのポートを指定する必要があります。

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