EJB3适用于SOA / EIP在哪里?

时间:2012-06-18 20:24:46

标签: java architecture soa apache-camel esb

我对EJB3的理解(也许是非常简单)是它将POJO转变为符合Java EE的业务逻辑单元的一种方式。它是可重用的,可以“插入”跨越多个项目的不同后端架构。这是真正的组件驱动架构的一个步骤。 如果这些断言中的任何一个是不真实的,请先纠正我!!

如果我对这些项目是正确的,那么我想知道如何/何时/何时/如果EJB3捕获到像Apache Camel这样的ESB。使用Camel,每个端点通常会实现一些EIP,如WireTapFilterTransformer。我想知道EJB(特别是EJB3)适合哪些EIP / SOA模式。这是一个简单的Filter吗?还有别的吗?

我想我的问题的根源是:

  • 如果我正在构建Camel Route,那么将EJB3作为端点何时才有意义,而不是其他一些EIP? ESB中EJB3的用例是什么?它们何时优于其他EIP?

3 个答案:

答案 0 :(得分:2)

在这种情况下没有对错。

EJB非常好地插入JavaEE应用程序服务器,并且构建为提供一种体系结构,将业务逻辑封装为EJB中的Java代码,并让应用程序服务器处理扩展,限制,故障转移,群集,负载平衡等,以及将EJB暴露给通信协议(Web服务或JMS for Message Driven Beans)。

我认为在Apache Camel中将EJB引入业务逻辑容器没有任何意义,除非您已经拥有了希望Camel使用的完整堆栈Java EE应用程序。

Camel有很多功能可以通过bean-binding连接到“真正的”pojos。

我建议使用简单的java bean / pojos作为业务逻辑,你可以通过camel丰富的连接器轻松地将它们插入任何其他应用程序。实现不同的驼峰EIP有多种选择。一种常见的方法是使用java代码,但用于转换的XSLT和用于过滤器的groovy也同样常见。我永远不会将EJB用于简单的过滤器,而是在Java EE应用程序中调用一些复杂的逻辑。服务器,或者通常一起避免所有(MDB除外),而是查看与应用程序服务器的JMS通信。

答案 1 :(得分:1)

基本上,EJB是一种服务。服务背后的想法是它可以简单地使用而无需将其创建为消费者。此外,通常可以在注册表中查找服务。

所以我的建议是将简单的bean集成用于易于实例化bean impl并在困难时使用服务的情况。因此,您可以将初始化封装在提供服务的组件中。

我不是经常使用EJB,而是经常使用与EJB概念非常相似的OSGi服务。

答案 2 :(得分:0)

除了之前的答案,我还提到SOA与指定的requirements相比,而不是具体的技术堆栈。无论操作系统,平台和语言如何,都可以通过网络使EJB3 bean或OSGI服务可操作,并且您将拥有面向服务的系统。因此,EJB和OSGI或Spring支持的应用程序在满足其要求时确实适合SOA。