我对EJB3的理解(也许是非常简单)是它将POJO转变为符合Java EE的业务逻辑单元的一种方式。它是可重用的,可以“插入”跨越多个项目的不同后端架构。这是真正的组件驱动架构的一个步骤。 如果这些断言中的任何一个是不真实的,请先纠正我!!
如果我对这些项目是正确的,那么我想知道如何/何时/何时/如果EJB3捕获到像Apache Camel这样的ESB。使用Camel,每个端点通常会实现一些EIP,如WireTap
,Filter
或Transformer
。我想知道EJB(特别是EJB3)适合哪些EIP / SOA模式。这是一个简单的Filter
吗?还有别的吗?
我想我的问题的根源是:
答案 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。