假设像这样的经典3层JavaEE架构


JSF / JSP / Servlet(Web)
EJB(企业)
DB(持久性)


所有JavaEE tutorial示例都显示了位于不同容器中但位于同一JavaEE服务器中的Web和biz层。

在任何情况下,将EJB分开放置在自己的机器中是否有优势?在这种情况下,假设他们要通过RMI与Web层通信,是否有任何JavaEE容器可以管理EJB,但不能管理JSP和servlet?

最佳答案

在任何情况下,将EJB分开放置在自己的机器中是否有优势?


有时,特定的非功能性要求可以决定您的应用程序设计。
例如,安全性:为了实现某些安全规范,业务层必须驻留在不直接暴露给Internet的更安全的服务器中。

可用性:如果您的业务层公开了一些与Web服务器不同的客户端使用的服务,并且这些服务提供了某种关键任务功能,则可能需要在24/7服务器上运行。

我不确定用“优势”来思考是查看这种分离架构的正确方法。
我认为这更像是您需要满足这种要求时必须支付的价格(以更复杂的设计转换)。


  是否有管理EJB而不管理JSP和servlet的JavaEE容器?


是的,例如OpenEjb

10-06 16:08