Swing Client - 在JBoss 5.1中通过HTTP进行EJB2查找

时间:2012-01-04 09:50:55

标签: jboss rmi jndi

我有一个swing客户端连接到我在JBoss 5.1中部署的ejb2应用程序。客户特别要求在互联网上提供。

部署架构如下,

swing_client - > extranet_ip |防火墙| - > iis7_machine - > jboss5.1_machine。

客户端中的jndi属性如下 Context.PROVIDER_URL = HTTP:// extranet_ip:9180 /调用/ JNDIFactory Context.INITIAL_CONTEXT_FACTORY = org.jboss.naming.HttpNamingContextFactory

当客户端位于Intranet内时,此配置正常。但它不适用于互联网(外联网)。

当我最初尝试时,我收到错误'Connection refused' 在各种论坛上看到一些帖子后,我更改了文件server \ deploy \ http-invoker.sar \ META-INF \ jboss-service.xml,以反映invokerURL中的extranet_ip。

我发现以下错误。

org.jboss.remoting.CannotConnectException:无法获得与服务器的连接。为InvokerLocator建立套接字连接的问题[socket://10.200.1.193:4546 /?dataType = invocation& enableTcpNoDelay = true& marshaller = org.jboss.invocation.unified.marshall.InvocationMarshaller& unmarshaller = org.jboss.invocation.unified。 marshall.InvocationUnMarshaller]

其中10.200.1.193是JBoss Server机器的Intranet IP地址。

我尝试将remoting-jboss-beans.xml中的trasport参数更改为http,但此时客户端无法在Intranet和Extranet中工作。

请有人为此问题提出建议。或者还有其他方法可以在JBoss中实现Htt over Http吗?

更新:作为解决方案,我必须按如下方式更改部署架构。

swing_client - > extranet_ip |防火墙| - > jboss5.1_machine

JBoss Application Server将通过防火墙直接公开。然后将remoting-jboss-beans.xml中的clientConnectAddress更新为Extranet IP。同时打开端口8080& 4446在防火墙中为此地址。

这样,如果我使用jnid属性,则swing客户端正在运行,如下所示。

Context.PROVIDER_URL:http://extranet_ip:8080/invoker/JNDIFactory
Context.INITIAL_CONTEXT_FACTORY:org.jboss.naming.HttpNamingContextFactory

但仍在寻找一种解决方案,无需打开任何非标准端口,也无需直接公开Application Server。

1 个答案:

答案 0 :(得分:0)

经过长时间的努力,我找到了解决问题的方法。解决方案是在standardjboss.xml中将EJB容器的调用者类型更改为http。当调用者是http时,它将使用http-invoker.sar中的设置进行远程绑定。

相关问题