我对这个 EJB 概念非常陌生。我被分配了一项任务来开发一个应用程序,该应用程序是 Netflix 的复制品。我们有两个模块:
- 所有者将拥有一个桌面应用程序
- 用户将拥有网络应用程序。
如何为单个 EJB 连接桌面应用程序和基于 Web 的应用程序?
最佳答案
因此,您在应用程序服务器(例如 Glassfish、JBoss 等)中部署了一个 EJB,并且您希望桌面 (J2SE) 和 Web(例如 Tomcat)应用程序中的客户端使用此(当然是远程)EJB。
如果这就是您所拥有的,您需要您的客户端使用 JNDI 连接到远程 EJB,如下所示(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 中定义的关键元素。
您的客户端(桌面、Web)显然需要了解 EJB 接口(interface)。 Web 服务器和桌面模块都需要应用服务器命名库。
关于java - 如何对客户端应用程序和 Web 应用程序使用单个 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888583/