我有一个奇怪的问题,具体是关于Jboss的JNDI和Linux。 如果我通过ssh(Putty)在服务器上并运行以下命令:
telnet localhost 1099
它告诉我拒绝连接,但是......如果我跑:
telnet x 1099
其中x是服务器的IP地址,它在实际服务器上连接所有这些。
这怎么可能?不应该通过localhost工作?我也没试过127.0.0.1。
答案 0 :(得分:7)
听起来该程序绑定到特定的IP地址或网络接口。运行netstat -tnlp | grep :1099
,您可能会看到它正在侦听非环回接口。
如果您可以指示应用程序侦听0.0.0.0
(IPv4通配符地址),则可以从计算机上的任何网络接口访问它。
答案 1 :(得分:1)
我猜你的JBoss实例是以 - host = x (或 -bx )选项启动的,其中 x 是IP地址(不是127.0.0.1,不是0.0.0.0而不是localhost)。这意味着JNDI只会监听 x 。
您可以通过检查JMXConsole中的系统属性来确定是否是这种情况。找到MBean jboss:name = SystemProperties,type = Service 。找到名为 showAll 的操作并调用它。将显示系统属性。查找 jboss.bind.address 的值,您可能会发现它显示 x 而不是0.0.0.0,它听起来就是您真正想要的。
话虽如此,您可能会对命名(jndi)服务上的绑定地址进行特定覆盖。 - host = 或 -b 选项设置属性 jboss.bind.address ,该属性成为默认绑定几乎所有网络服务的地址,但可以将单个服务配置为与 jboss.bind.address 不同的特定绑定地址。查看JMXConsole中的 jboss:service = Naming MBean,并查找 BindAddress 属性。该地址表示可以连接的接口。 (如果它是0.0.0.0,那么所有你的接口。
希望有所帮助。
答案 2 :(得分:0)
你确定环回接口已启动吗?
# ifconfig lo
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
...
如果您没有看到UP LOOPBACK RUNNING
,而只看到LOOPBACK
,请使用ifconfig lo up
启动环回界面,然后重试。