【问题标题】:OSGI integration with Java EEOSGI 与 Java EE 的集成
【发布时间】:2011-12-26 15:12:16
【问题描述】:

目前我正在开发一个 OSGI 应用程序来抽象一些后端服务的前端 UI。后端的架构是在 jboss 应用服务器中运行的传统 Java EE。

在前端应用程序中,我需要从后端检索一些数据(最终是数据库数据),但有一些 EJB 可用于检索数据。

根据我所做的一些阅读,从 OSGI 容器中调用 EJB 似乎不是很容易,而且不使用 servlet 桥也不可行。

我有一些关于将这些包装在 Web 服务中的想法,但不确定最好的方法是什么。就数据交互而言,我想了解有关将 OSGI 与 Java EE 集成的最佳实践或方法的一些想法。

【问题讨论】:

    标签: jakarta-ee ejb osgi


    【解决方案1】:

    我们有一个应用程序通过Spring remoting 使用此方法(在我们的例子中是第 19.4 节)。

    在客户端创建一个具有远程调用包的服务接口并直接访问服务器上的 EJB 很简单。它还具有不依赖于服务器特定代码的优点。

    【讨论】:

    • 这听起来更像是我想做的事情。你能解释一下你是怎么做到的吗?听起来您有一个调用 servlet(我猜是在 spring 应用程序中运行)的 osgi 包,并且您正在从 servlet 中访问您的 ejb?我说的对吗?
    • 我会接受这个答案,因为它让我想到了我当前的解决方案。我提供了一个服务接口,它可以对我现有的 ejbs 进行 web 服务调用和端点包装。
    • @broschb - 您的第一条评论基本正确。 servlet 实际上是 Spring DispatcherServlet,我们连接 EJB 以通过 servlet 调用。然后客户端简单地使用 Spring 提供的 HttpInvoker 代码创建一个动态代理,该代理将调用 servlet。
    【解决方案2】:

    假设您使用的是 JBoss 4.3.x 版 - 您应该能够包装 jbossall-client.jar 然后使用 org.jboss.remoting.InvokerLocator 创建一个 org.jboss.remoting.Client - 这将允许你做任何事情,但它是相当重量级的(jar 是 4.7mb)。另一种选择是访问 JBoss 实例的 JNDI。

    无论哪种方式,您都将(显然)需要您的 OSGi 应用程序可用的 EJB 定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-15
      • 2012-12-16
      • 2018-11-07
      • 2015-01-17
      • 2015-04-12
      • 1970-01-01
      • 2021-03-29
      • 2013-07-23
      相关资源
      最近更新 更多