Remote Access

EJB FAQ: https://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

 本地:

            Properties props = new Properties();

           //props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");

           // props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");

           // props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");

            props.setProperty("org.omg.CORBA.ORBInitialHost", host);

            props.setProperty("org.omg.CORBA.ORBInitialPort", port);

            Context ctx = new InitialContext(props);

            

         EJBRemote remoteEjb= (EJBRemote )ctx.lookup("java:global/" + app/ejbName);;//见控制台输出.

         remoteEjb.xxxx();

------------------

远程: 具体的方法实现

远程接口:

<jvm-options>-Dorg.omg.CORBA.ORBSingletonClass=com.sun.corba.se.impl.orb.ORBSingleton</jvm-options>

glassfish domain.xml文件配置

//配置server端的jvm。

  1. 普通的java客户端可以正常访问远程EJB,儿在javaee环境中无法访问的情况:

    1)<jvm-options>-Dorg.omg.CORBA.ORBSingletonClass=com.sun.corba.se.impl.orb.ORBSingleton</jvm-options>

    glassfish domain.xml文件配置//默认的这个类无法加载..

    2)出现Character does not map to negotiated transmission code set  vmcid: SUN  minor code: 1  completed: No异常

  2. 详细: 00810007: Underflow in BufferManagerReadStream after last fragment in message  vmcid: OMG  minor code: 7  completed: No

    存在未序列化的类

  3. 发生诸如character 无法映射到trans......之类的错误,其实是项目的路径中存在非英文字符

  4. ejb在glassfish web环境下只需要像上面的配置即可远程访问,系统会自动读取System.getProperty()中的属性,独立的java 程序则需要将

  5. 远程接口的包结构要与他在远程ejb中时候的结构一致,否则运行的时候会报找不到远程接口的错误.

    



























你可能感兴趣的:(ejb,Glassfish)