我正在查看有关Java EE应用程序部署模式的书籍/在线资源。特别是我想知道何时使用本地接口时的模式(我需要多少个节点?)。关键问题是对EJB和WAR使用单个EAR(EJB和WAR)或单独的节点。
我发现资源过时,他们专注于EJB2或design patterns。我对EJB3,Spring或Seam等新技术感兴趣。
答案 0 :(得分: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部署到不同的层?
协同定位:简单,故障模式更少,网络开销减少。
Ditributed EJB / WAR:独立的可伸缩性(您可以独立地向Web层或EJB层添加更多处理能力),支持多个客户端,相同的业务逻辑可以暴露给其他客户端(这也可能导致可伸缩性需求) ),独立的维护版本(Web补丁不会扰乱EJB)。