假设像这样的经典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。