0

我正在寻找有关 Java EE 应用程序部署模式的书籍/在线资源。特别是我想知道在远程接口时何时使用本地接口的模式(我需要多少节点?)。关键问题是为 EJB 和 WAR 使用单个 EAR(EJB 和 WAR)或单独的节点。

我发现的资源有点过时了,它们专注于EJB2设计模式。我对 EJB3、Spring 或 Seam 等新技术很感兴趣。

4

1 回答 1

1

首先,对于 WebSphere 等应用程序服务器,您可以拥有一个包含一个(或多个)WAR 和一个(或多个)EJB JAR 的 EAR,并且每个 WAR 和 JAR 可以部署到不同的服务器。因此,这不必是关于有多少 EAR 的问题,部署模式是一个单独的问题。您可能决定生成两个 EAR,但这并不是 Java EE 规范本身所强制的。

其次,在开发时,您确实需要决定您的 EJB 是否应该公开一个可远程调用的接口。这首先是一个设计决策。适合本地调用的 API 不一定适合远程调用。例如,一个非常细粒度的 API 可能会产生过多的消息开销——如果我们公开一个远程 API,那么我们倾向于使用粗粒度的 API。

第三,EJB 3.0 并没有从根本上改变关于远程部署模式是否合适的架构和设计决策。EJB 3.0 提供了比 EJB 2.x 更简单的编程模型,因此要编写的代码/XML 少得多,但就最终的部署模式而言,在处理或跨网络流动的字节方面发生的事情没有实际变化. 作为一名 Spring 或 Seam 开发人员,我不能确定 Spring 或 Seam 是否会说同样的话,但我的猜测是,诸如远程或不远程等基本架构决策将与技术无关。

那么,是什么力量可能导致您将 Web 和 EJB 部署到不同的层?

协同定位:简单、故障模式更少、网络开销减少。

分布式EJB/WAR:独立的可扩展性(可以单独为Web层或EJB层增加更多的处理能力),支持多个客户端,相同的业务逻辑可以暴露给其他客户端(这也可能产生可扩展性的需求),独立维护版本(Web 补丁不会干扰 EJB)。

于 2009-09-29T13:45:12.213 回答