Итак, у вас есть 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. Как веб-серверу, так и модулю рабочего стола потребуются также библиотеки имен серверов приложений.