2

如何在传递给(Java EE)InitialContext 类的“env”参数中为“java.naming.provider.url”属性使用完全限定的主机名。无论我传入一个 IP 地址,还是一个完全限定的(host.domain ...)主机名,lookup(name) 调用都会失败,说它找不到主机名,其中主机名只是没有其域的主机。例如 - 假设 mypc.somedomain.net 是 1.2.3.4,输入“1.2.3.4”或“mypc.somedomain.net”将失败,如下所示:

javax.naming.CommunicationException java.rmi.UnknownHostException: mypc

我需要将 DNS 服务器传递到 InitialContext 吗?让底层操作系统完成这项工作还不够聪明吗?(如“ping mypc.somedomain.net”,它只是工作)

客户端和服务器既不在同一台机器上,也不在同一个子网中,所以我必须使用完全限定的主机名。为了对“Robin”进行一些改进,我们通常在单独的 JVM 中运行客户端进程,该 JVM 通常会访问 localhost 上的服务器,或者有时在同一子网/域(例如 - “testbox”)上的另一个主机上,这不需要一个完全限定的名称。

另外,我尝试添加“jns://”前缀和“:1099”后缀(例如-“jns://mypc.somedomain.net:1099”),并不是说这些是使“testbox”工作所必需的,并且得到了同样的例外。

我搜索了一下,发现了这个错误的几个实例(InitialContext / JBoss -> UnknownHostException)或类似的问题,但没有答案。哎哟。

4

2 回答 2

1

经过仔细检查,这是以下内容的副本:

在不同的网络上时出现 JBoss UnknownHostException

EJB 客户端无法访问 JBoss EJB 服务器,除非 JBoss 服务器以服务器知道自己的(完全限定的)名称的方式启动。

我的 Windows XP PC 知道它的“短”名称,但您必须使用引用问题中提到的 -b 参数(绑定)为 jboss 提供完全限定的名称。关于 JNDI(或 EJB?)协议的某些内容需要某种“双重查找”,在找到主机后,查询它的名称,然后再次查找(或不查找)。去搞清楚。反欺骗保护???

于 2009-05-26T21:45:05.877 回答
0

您的最后一条语句意味着您正在将客户端作为独立应用程序运行。如果是这种情况,它没有在 Java EE 容器中运行,您必须进行适当的配置以运行瘦客户端,这应该在您的应用服务器文档中的某处进行定义。

简单地尝试从完全限定名称中查找 InitialContext 是行不通的。我从来没有为 JBoss 做过这个,但我为 WAS 做过。您必须找出需要哪些 JBoss jar 和配置才能使其工作。

与 WAS 一样,它们可能有一些创建客户端容器的方法,然后允许您以正常方式完全访问 Java EE 资源。

于 2009-05-26T19:31:08.207 回答