我在eapps.com上有一台远程服务器,我用它作为我的“生产”服务器。我家里有自己的电脑,我用它作为我的“开发”服务器。我正在尝试通过HTTP使用JNDI来进行一些批处理。以下是在家工作,但不适用于eapps机器。
我正在连接一些EJB(无状态会话),并将我的jndi.properties设置为:
(这是针对eapps机器的)
java.naming.factory.initial=org.jboss.naming.HttpNamingContextFactory
java.naming.provider.url=http://my.prodhost.com:8080/invoker/JNDIFactory
java.naming.factory.url.pkgs=org.jboss.naming.client:org.jnp.interfaces
# timeout is in milliseconds
jnp.timeout=15000
jnp.sotimeout=15000
jnp.maxRetries=3
(这是我家里的机器)
java.naming.factory.initial=org.jboss.naming.HttpNamingContextFactory
java.naming.provider.url=http://localhost:8080/invoker/JNDIFactory
java.naming.factory.url.pkgs=org.jnp.interfaces
java.naming.factory.url.pkgs=org.jboss.naming.client
# timeout is in milliseconds
jnp.timeout=15000
jnp.sotimeout=15000
jnp.maxRetries=3
正如我所说,它适用于家庭,但当我远程尝试时,我得到:
Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://my.prodhost.com:4446//?dataType=invocation&enableTcpNoDelay=true&marshaller=org.jboss.invocation.unified.marshall.InvocationMarshaller&socketTimeout=600000&unmarshaller=org.jboss.invocation.unified.marshall.InvocationUnMarshaller]
...
Caused by: java.net.ConnectException: Connection timed out: connect
我在这里做错了什么,还是可能是防火墙问题?据我所知,端口4446没有被阻止。
答案 0 :(得分:1)
jndi.properties
故意(java.naming.factory.url.pkgs
属性级别)的差异是什么?
此外,您可以在两台计算机上运行netstat -a | grep 4446
并使用输出更新问题吗?
更新:如果netstat
命令没有为端口4446返回任何内容(JBoss正在运行,对吗?),那么Connector
用于{Connector
3}}服务很可能无法监听您的eApps主机,因此连接超时。也许这项服务已被eApp禁用,您应该联系UnifiedInvoker并与他们讨论。
以防万一,可以在服务器节点的jboss-service.xml
目录下的conf
中找到示例netstat
配置。也许将远程的(如果你有权访问它)与你的本地文件进行比较以确认这一点(但是如果它被禁用,必须有一个原因,与支持人员讨论)。
顺便说一句,这是我在JBoss 4.2.3.GA上运行$ netstat -a | grep 4446
tcp 0 0 localhost:4446 *:* LISTEN
命令时得到的结果。我的GNU / Linux机器启动了(默认配置):
{{1}}