【问题标题】:Access remote glassfish server from ejb client从 ejb 客户端访问远程 glassfish 服务器
【发布时间】:2022-03-30 20:47:31
【问题描述】:

我有一个 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,并将 IP 从 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;主机名:我的服务器,端口:3700 ...... etc ',我猜这是正确的。

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

最后,我将 glassfish 服务器的相同 jar 复制到客户端,如果版本有任何差异。

什么都没有。这没用。 我已经读过EJB remote application-clientUnable to do a remote ejb access from a different host 还有……等等。

请帮帮我..!!!

【问题讨论】:

标签: ejb-3.0 glassfish-4


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我有一个运行主机 B 的应用程序客户端,我可以在本地访问它,但不能从主机 A 远程访问。 在主机 A 上 ping 主机 B 给了我一个 Internet 地址 192.x.x.x,但是在主机 B 上 ping 主机 B 给了我一个地址 172.x.x.x。这样做的原因是,我在主机 B 上有 2 个活动的网络适配器:

    - Ethernet (default switch) with the iPv4-address 172.x.x.x
    - WiFi with iPv4-address 192.x.x.x
    

    停用主机 B 上的以太网适配器后,我可以从主机 A 远程启动主机 B 上的应用程序客户端。 我正在运行 window 10、Glassfish 5.0.1 和 JDK 1.8.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2014-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多