Как использовать один EJB для клиентского приложения и веб-приложения - PullRequest
1 голос
/ 25 октября 2011

Я очень новичок в этой концепции EJB. Мне поручено разработать приложение, которое является точной копией netflix. У нас есть два модуля:

  • Владелец будет иметь настольное приложение
  • пользователи будут иметь веб-приложение.

Как совместить как настольное приложение, так и веб-приложение для одного EJB?

1 Ответ

0 голосов
/ 26 октября 2011

Итак, у вас есть EJB, развернутый на сервере приложений (например, Glassfish, JBoss и т. Д.), И вы хотите, чтобы клиенты из настольного (J2SE) и веб-приложения (например, Tomcat) использовали этот (конечно, удаленный) EJB.

Если это то, что у вас есть, вам нужно, чтобы ваши клиенты подключались к удаленному EJB с помощью JNDI, как показано ниже (пример JBoss):

try {
    Context context = new InitialContext(getJNDISetup());
    MyServiceEJBRemote delegate = (MyServiceEJBRemote)context.lookup(MY_SERVICEEJB_JNDI_NAME);               
} catch (NamingException e) {
    // log exception
}

private static Hashtable<?, ?> getJNDISetup() {
    // perform jndi lookup with your favorite method, hashtable, properties file... in this case, hashtable.
    Hashtable<String, String> setup = new Hashtable<String, String>();
    setup.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
    setup.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
    setup.put("java.naming.provider.url","localhost:1099");

    return setup;

}

В зависимости от сервера приложений вам может потребоваться изменить ключевые элементы, определенные в HashMap.

Ваши клиенты (destkop, web) должны будут знать интерфейс EJB. Как веб-серверу, так и модулю рабочего стола потребуются также библиотеки имен серверов приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...