Доступ к удаленному EJB, запущенному в другом Glassfish (EJB-контейнере), из другого Glassfish (веб-контейнера) - PullRequest
2 голосов
/ 03 сентября 2010

Я хочу использовать два отдельных сервера, один для веб-контейнера и один для ejb-контейнера.Оба эти двух контейнера - Glassfish V3.

Но, как использовать аннотацию @EJB в моем веб-проекте для доступа к ejb (s) удаленного ejb-контейнера.

В Ejb 2.0 мыдолжны использовать ejb-дескрипторы, но что произошло в Ejb3.0 и glassfish v3?

спасибо

1 Ответ

2 голосов
/ 24 сентября 2010

Я никогда не делал этого лично, потому что я предпочитаю использовать локальные интерфейсы в той же JVM, поскольку это значительно повышает производительность.

Но вы можете проверить это:

https://glassfish.dev.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");


  // 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. Используйте глобальное имя JNDI целевого удаленного EJB в поиске.

EJB 3.x, предполагаяглобальное имя JNDI "com.acme.FooRemoteBusiness":

 FooRemoteBusiness foo = (FooRemoteBusiness) ic.lookup("com.acme.FooRemoteBusiness");

EJB 2.x, принимая глобальное имя JNDI "com.acme.FooHome":

Object obj = ic.lookup("com.acme.FooHome");

  FooHome fooHome = (FooHome) PortableRemoteObject.narrow(obj, FooHome.class);
...