【问题标题】:Java EE deployment patterns resoursesJava EE 部署模式资源
【发布时间】:2009-09-29 12:36:02
【问题描述】:

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

我发现的资源有点过时,它们集中在EJB2 或design patterns。我对 EJB3、Spring 或 Seam 等新技术很感兴趣。

【问题讨论】:

    标签: design-patterns deployment ejb-3.0 java-ee-5


    【解决方案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)。

    【讨论】:

    • “那么,是什么力量可能导致您将 Web 和 EJB 部署到不同的层?” - 安全原因。 Web 服务器位于 DMZ 中,因此很容易受到攻击,突破后,ejb 服务器仍然安全。
    • @cetnar WebServer 通常是 Apache,纯粹的 Web 服务器,在 DMZ 中,将请求转发到 Servlet 引擎不会在连接互联网的 DMZ 中运行。但是,您的一般观点说得很好,安全性很可能导致分离。
    • @djna 您是否知道任何有关部署方案的互联网资源/书籍参考资料,或者这是常识?
    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多