2011-11-10 40 views
1

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

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

根据我所做的一些阅读,似乎并不容易,而且在没有使用servlet桥的情况下不可行,从OSGI容器内调用EJB。

我对将这些封装在Web服务中有一些想法,但我不确定最佳方法可能是什么。就数据交互而言,我想谈谈将OSGI与Jav​​a EE集成在一起的最佳实践或方法。

回答

0

我们有一个应用程序,通过Spring remoting(本例中为19.4)使用此方法。

创建在客户端上具有远程调用包并直接访问服务器上的EJB的服务接口很简单。它也具有与服务器特定代码无关的优点。

+0

这听起来更符合我想要做的事情。你能解释一下你是如何做到这一点的?这听起来像你有一个osgi bundle调用servlet(运行在我猜测的spring应用程序中),并且从servlet中访问你的ejb?我在这里纠正? – broschb

+0

我会接受这个答案,因为它引导我思考当前的解决方案。我提供了一个服务接口,使web服务调用和端点包装我现有的ejbs。 – broschb

+0

@broschb - 您的第一条评论大多数都是正确的。这个servlet实际上是Spring DispatcherServlet,我们通过连接EJB来通过servlet调用。然后客户端简单地使用Spring提供的HttpInvoker代码来创建一个动态代理,它将调用这个servlet。 – Robin

0

假设您使用的是JBoss 4.3.x版 - 您应该能够包装jbossall-client.jar,然后使用org.jboss.remoting.InvokerLocator创建org.jboss.remoting.Client - 此操作将允许你做任何事情,但相当重量级(罐子是4.7MB)。另一种选择是访问JBoss实例的JNDI。 (显然)需要EJB定义可用于您的OSGi应用程序。