【问题标题】:JBoss UnknownHostException when on different network在不同的网络上时出现 JBoss UnknownHostException
【发布时间】:2009-05-08 15:10:43
【问题描述】:

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

sqlserver 提供两种服务,一种通过 .NET Web 服务,另一种通过 JBoss。在 DEV 网络上运行客户端时,两种服务都可以正常工作。在 CLIENT 网络上时,只有 .NET 服务有效。

JBoss 客户端尝试在以下代码中执行 ContextLookup 时抛出 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
绑定地址
java.rmi.server.hostname

有人有什么想法吗?

【问题讨论】:

    标签: java jboss dns rmi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多