尝试从独立的非EE Java客户端访问远程EJB

时间:2016-03-01 18:30:28

标签: jndi ejb-3.1 netbeans-8 glassfish-4 java-ee-7

我有两台笔记本电脑。两者都通过家用Wi-Fi路由器连接到互联网。

laptop1:使用NetBeans 8和GlassFish 4测试Java Enterprise Edition 7应用程序

laptop2:使用Eclipse Mars

测试Java Standard Edition 7应用程序

以下是我在laptop1上所做的事情:

  1. 将一个简单的EJB组件和一个包含EJB远程接口的库打包到EAR中。

  2. 在GlassFish上成功部署。

  3. 将企业应用程序客户端和包含EJB远程接口的同一个库打包到模块中,并在GlassFish上单独部署。

  4. 两个应用程序(EAR和客户端模块)运行正常,客户端能够使用依赖注入(@EJB)调用ejb组件的方法。

  5. 以下是我在涉及laptop1和laptop2时遇到的问题:

    我正在尝试在laptop2上创建一个独立的非EE客户端,以便调用驻留在laptop1上的远程EJB组件上的方法。我正在关注此文件 https://glassfish.java.net/docs/4.0/application-development-guide.pdf

    该文件中的步骤如下。请参阅下面的问题。

    STEP1

    InitialContext ctx = new InitialContext();

    BeanRemote bean =(BeanRemote)ctx.lookup(“com.acme.BeanRemote”);

    对我来说它看起来不像JNDI。 java:global在哪里?

    STEP2

    将as-install / lib / gf-client.jar文件复制到客户端计算机并将其包含在客户端的类路径中。 我该怎么做以及在哪里可以找到客户端的类路径?

    如果客户端计算机(duh!)上没有安装GlassFish Server,则还必须将as-install / modules目录复制到客户端计算机并维护其 相对于as-install / lib / gf-client.jar文件的目录结构。 类路径中的相对性?

    STEP3

    为JVM启动选项设置以下系统属性:

    -Dorg.omg.CORBA.ORBInitialHost = $ {ORBhost}

    -Dorg.omg.CORBA.ORBInitialPort = $ {ORBport}

    这里ORBhost是GlassFish Server主机名,ORBport是ORB端口 number(默认服务器实例的默认值为3700,名为server)。

    如何在客户端为JVM设置上述启动选项?

    STEP4

    确保客户端计算机上的etc / hosts文件映射GlassFish Server主机名和外部IP地址。 在每台笔记本电脑上的此文件中,我是否需要将完全合格的域标记为计算机名称并将其放在wi-fi网络分配的IP旁边?

1 个答案:

答案 0 :(得分:0)

试试这个

String ejbConnectionName = String.format("ejb:%s/%s!%s", appModuleName, beanName, remoteBeanName);              
BeanRemote bean = (BeanRemote) context.lookup(ejbConnectionName);