java - 如何对客户端应用程序和 Web 应用程序使用单个 EJB

标签 java ejb ejb-3.0

我对这个 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/

相关文章:

jakarta-ee - 基于容器的EntityManager的动态@PersistenceContext unitName属性

java - ThreadPoolExecutor 更多线程=较慢的 android

java - 处理海量个性化数据的项目应该使用什么样的数据格式?

java - 在 EJB 中注入(inject)数据源

java - 如何从 EJB 捕获运行时异常?

eclipse - Persistence.xml 放在 eclipse 项目的什么位置

java - org.hibernate.id.IdentifierGenerationException : ids for this class must be manually assigned before calling save()

jboss - 重新部署后注入(inject)的@EJB 引用为空

java - 在 Gradle 插件中获取项目源目录

java - Spring 3.1 : Redirect after login not working