Как я могу развернуть Session Bean на другом компьютере с помощью Client JSP / Servlet? - PullRequest
5 голосов
/ 01 сентября 2010

Привет всем, я новичок в EJB3, я знаю, как развернуть Session Bean (без сохранения состояния или с состоянием) на сервере Glassfish на одном компьютере.Мой вопрос: как я могу развернуть сессионный компонент на компьютере A и развернуть сервлет или JSP на компьютере B?Это означает, что у компьютера A есть источник сессионного компонента, а у компьютера B - источник сервлета или JSP.Если я использую 1 компьютер, я могу использовать Session Bean для поиска зависимости @EJB, но на другом компьютере, как я могу сделать это для клиентского кода?Пример для 1 компьютера

@EJB
private StatelessRemote remote ;

double Dosomething= remote.Dosomething();

out.println(Dosomething);

1 Ответ

6 голосов
/ 01 сентября 2010
  1. Создайте "jar клиента" с удаленными интерфейсами, разверните на клиенте

  2. Предоставьте jar-файл сервера приложений (не обязательно в вашем сценарии)

  3. Укажите jndi.properties на пути к классам со следующим содержимым (при условии связи между GlassFish и GlassFish):

    java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
    java.naming.factory.url.pkgs=com.sun.enterprise.naming
    java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl
    org.omg.CORBA.ORBInitialHost=<hostname>
    org.omg.CORBA.ORBInitialPort=3700
    
  4. Используйте атрибут mappedName аннотации @EJB, чтобы указать глобальное имя JNDI целевого компонента Remote EJB (если в файле sun-ejb-jar.xml не задано jndi-name - или вообще sun-ejb-jar.xml - глобальное имя jndi по умолчанию соответствует полному имени класса бизнес-интерфейса Remote 3.0):

    @EJB(mappedName="com.acme.app.StatelessRemote")
    private StatelessRemote remote;
    

Ресурсы

...