在不同的网络上JBoss UnknownHostException

让JBoss在网络上工作时遇到了一些问题。 作为一个快速概述,我们有一个开发网络(我称之为DEV)和一个客户端网络(比如说…客户端!)。 它们通过防火墙连接。 在Dev网络中,服务器称为192.168.100.50,在客户端网络上称为10.0.100.50。 两个网络中的DNS通过DNS(sqlserver.dev.net)解析相关的IP。

sqlserver提供2个服务,一个通过.NET Web服务,另一个通过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); } 

例外情况是:

根exception是java.rmi.UnknownHostException:未知主机:SQLserver

我可以确认问题是客户端正在尝试连接到没有域名的’sqlserver’。 这已经通过将’sqlserver’添加到客户端的主机文件中进行了测试,并且工作正常。 另外,“SQLserver”的拼写很有趣,因为这是Windows主机报告主机名的方式,而不是它如何存储在DNS中。 我最好的猜测是,一旦客户端进行初始连接,JBoss会告诉客户端将来连接到’SQLserver’,客户端无法解析。

我已经尝试将以下系统属性设置为sqlserver的FQDN:

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

有没有人有任何想法?

好的,事实certificate在启动时绑定到0.0.0.0实际上会弄乱它的自我识别。 绑定到sqlserver.dev.net(run.bat -b sqlserver.dev.net)修复它。

可能是您的网络有代理服务器,您需要在属性中提供代理服务器ip和代理端口检查。