首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个Glassfish(Web-Container)访问在另一个Glassfish( EJB -Container)中运行的远程EJB

从另一个Glassfish(Web-Container)访问在另一个Glassfish( EJB -Container)中运行的远程EJB
EN

Stack Overflow用户
提问于 2010-09-03 22:02:16
回答 1查看 10K关注 0票数 2

我想使用两个独立的服务器,一个用于web容器,另一个用于ejb容器。这两个容器都是Glassfish V3。

但是,如何在我的web项目中使用@EJB注释来访问远程ejb容器的ejb。

在EJB2.0中,我们必须使用Ejb描述符,但是在Ejb3.0和glassfish v3中发生了什么呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-09-24 08:58:03

我个人从来没有这样做过,因为我更喜欢在同一个JVM中使用本地接口,因为它可以显着提高性能。

但你可以看看这个:

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

但你可以试一试:

代码语言:javascript
复制
    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");


  // optional.  Defaults to localhost.  Only needed if web server is running
  // on a different host than the appserver   
  props.setProperty("org.omg.CORBA.ORBInitialHost", "ejb_server_ip_or_host_name");

  // optional.  Defaults to 3700.  Only needed if target orb port is not 3700.
  props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

  InitialContext ic = new InitialContext(props);

步骤2.在查找中使用目标远程EJB的全局JNDI名称。

EJB3.x,假设全局JNDI名称为"com.acme.FooRemoteBusiness“:

代码语言:javascript
复制
 FooRemoteBusiness foo = (FooRemoteBusiness) ic.lookup("com.acme.FooRemoteBusiness");

EJB2.x,假设全局JNDI名称为"com.acme.FooHome“:

代码语言:javascript
复制
Object obj = ic.lookup("com.acme.FooHome");

  FooHome fooHome = (FooHome) PortableRemoteObject.narrow(obj, FooHome.class);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3636507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档