从ejb客户端访问远程glassfish服务器

时间:2014-02-06 22:13:01

标签: ejb-3.0 glassfish-4

我有一台Glassfish 4服务器,其中部署的应用程序在xubuntu 12.04上运行,无法使用ejb客户端远程访问。我可以访问本地glassfish服务器。我见过太多论坛,他们解释说这是linux中的glassfish'bug',本地搜索主机名等等。所以,给定的解决方案是在/ etc / hosts中添加IP和主机名在linux上。这是我服务器'myserver'上的/ etc / hosts:

127.0.0.1 localhost locahost.localdomain localhost4 localhost4.localdomain4     # I saw this line on internet
192.168.1.100   myserver

但是客户端无法访问myserver。这是我在myserver计算机上的设置:

IP LAN of my server (fixed): 192.168.1.100 
Hostname: myserver 
IP WAN : (dinamyc)
domain name: mydomain.org 

在我的路由器中,我打开了端口3700和4848,并从WAN转发到myserver的LAN IP。此外,每当更改我的IP WAN时,我的路由器都会更新我的DynDNS帐户。 我想补充说我已在端口8080(BarracudaDrive)上配置了一个NAS服务器,我可以直接从浏览器访问它:http://mydomain.org

我将glassfish配置为远程管理,我可以在没有互联网问题的情况下完成:http://mydomain.org:4848 另外,我使用以下设置修改了(在另一个解决方案之后)glassfish IIOP监听器:

network address: 192.168.1.100 (which could also put 'myserver')
listener port: 3700
listener: enabled

Glassfish成功启动。

远程从Windows 7计算机上的客户端,我尝试按如下方式连接到服务器:

props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("org.omg.CORBA.ORBInitialHost", "mydomain.org");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
....
lookup = context.lookup("beanName");

context.lookup在很长一段时间内冻结“消失”,直到我必须手动终止该应用程序。

我还尝试将客户端 - 服务器配置添加到系统中: System.setProperty(“org.omg.CORBA.ORBInitialHost”,“mydomain.org”);

没有

我也尝试在Windows上的/ etc / hosts中添加'myserver'的IP WAN(xx.yyy.aaa.bbb)(虽然WAN IP是动态的,但我想试试它是否有效) xx.yyy.aaa.bbb myserver

添加之后,我也试过'props.setProperty(“org.omg.CORBA.ORBInitialHost”,“myserver”);'

没有

如果我关闭glassfish服务器'context.lookup',大约1分钟后,返回'org.omg.CORBA.COMM_FAILURE:详细:00,410,001:连接失败:SocketType:IIOP_CLEAR_TEXT; hostname:myserver,port:3700 .....等等,我猜是正确的。

它不起作用。如果我把url:mydomain.org:3700放在chrome浏览器中,然后下载一个包含'GIOP'的文件和一些奇怪的字符,告诉我域和端口正在工作。 wireshark软件向我显示我的本地WAN IP与myserver的远程IP之间存在对话,但我不知道如何破译对话。

最后,如果版本有任何不同,我会将我的glassfish服务器的相同罐子复制到客户端。

无。这是行不通的。 我已经阅读了EJB remote application-clientUnable to do a remote ejb access from a different host 和.....等。

请帮助我...... !!!

1 个答案:

答案 0 :(得分:0)

也许它有点晚了,但我遇到了同样的问题。如果服务器位于防火墙/代理或任何类型的NAT(在我们的例子中是Docker)之后,Glassfish似乎有bug禁止EJB访问。也许你会有更多的运气与另一个应用程序服务器。