【发布时间】:2016-03-01 18:30:28
【问题描述】:
我有两台笔记本电脑。两者都通过我家的 wi-fi 路由器连接到互联网。
laptop1:使用 NetBeans 8 和 GlassFish 4 测试 Java Enterprise Edition 7 应用程序
laptop2:使用 Eclipse Mars 测试 Java Standard Edition 7 应用程序
这是我在笔记本电脑1上所做的:
将一个简单的 EJB 组件和一个包含 EJB 远程接口的库打包到 EAR 中。
在 GlassFish 上成功部署。
将企业应用程序客户端和包含 EJB 远程接口的同一个库打包到一个模块中,并在 GlassFish 上单独部署。
两个应用程序(EAR 和客户端模块)运行良好,客户端能够使用依赖注入 (@EJB) 调用 ejb 组件的方法。
这是我在做涉及笔记本电脑 1 和笔记本电脑 2 的事情时遇到的问题:
我正在尝试在laptop2 上创建一个独立的非EE 客户端,以便调用位于laptop1 上的远程EJB 组件上的方法。我正在关注这份文件 https://glassfish.java.net/docs/4.0/application-development-guide.pdf
该文档中编写的步骤如下。请参阅下面嵌入的我的问题。
步骤 1
InitialContext ctx = new InitialContext();
BeanRemote bean = (BeanRemote) ctx.lookup("com.acme.BeanRemote");
在我看来它不像 JNDI。 java:global 在哪里?
第二步
将 as-install/lib/gf-client.jar 文件复制到客户端计算机并将其包含在客户端的类路径中。 我该怎么做?我在哪里可以找到客户端的类路径?
如果客户端计算机上没有安装 GlassFish Server(duh!),您还必须将 as-install/modules 目录复制到客户端计算机并维护其 相对于 as-install/lib/gf-client.jar 文件的目录结构。 类路径中的亲戚?
第三步
为 JVM 启动选项设置以下系统属性:
-Dorg.omg.CORBA.ORBInitialHost=${ORBhost}
-Dorg.omg.CORBA.ORBInitialPort=${ORBport}
这里 ORBhost 是 GlassFish Server 主机名,ORBport 是 ORB 端口 编号(默认服务器实例的默认值为 3700,命名服务器)。
如何在客户端为 JVM 设置上述启动选项?
第四步
确保客户端计算机上的 etc/hosts 文件映射 GlassFish Server 主机名和外部 IP 地址。 在每台笔记本电脑上的这个文件中,我是否需要在计算机名称中标记一个完全限定的域,并将其放置在 wi-fi 网络分配的 IP 旁边?
【问题讨论】:
-
您宁愿将您的 EJB 包装在我们的 Web 服务后面,并使用 HTTP api 访问它,您不应该...
-
问题在于远程访问,而不是 EJB 的性质。
-
这个网站有什么问题?没有一个有用的答案。我经历了很多,总结了这里的台词,一丝不苟。\
-
那是我的观点。它告诉您一些人对 EJB 的关心程度,尤其是远程访问它们。我在建议一种更常见的方式来访问服务器功能。如果您有 EJB,它们可以正常工作,通过一些基于 HTTP 的 Web 服务访问它们会更简单。
-
感谢 Patrice 回到我的帖子。是的,我现在明白你的意思了。
标签: jndi ejb-3.1 netbeans-8 glassfish-4 java-ee-7