#java #ejb #ejb-3.0
#java #ejb #ejb-3.0
Вопрос:
Я очень новичок в этой концепции EJB. Мне поручено разработать приложение, которое является точной копией netflix. У нас есть два модуля:
- У владельца будет настольное приложение
- у пользователей будет веб-приложение.
Как мне настроить как настольное приложение, так и веб-приложение для одного EJB?
Ответ №1:
Итак, у вас есть 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. Как веб-серверу, так и настольному модулю потребуются также библиотеки именования сервера приложений.