【问题标题】:Java EE web application architecture possible solutionsJava EE Web 应用架构可能的解决方案
【发布时间】:2013-02-08 04:31:12
【问题描述】:

我正在开始一个新项目。这将是一个 Java EE Web 应用程序。该应用程序将由 3 个部分组成,每个部分具有不同的功能,但它们都属于一个应用程序。我正在考虑使用以下架构:

将有 4 个独立的项目(JSF Web 应用程序)。第一个将负责与数据库的通信并公开远程 EJB。我们将第一个项目称为“DataLayerProject”。我上面提到的其他 3 个应用程序将使用“DataLayerProject”中的 EJB 以便与数据库进行通信。它们将代表应用程序的表示层。

在我看来,这种方法将允许彼此独立地维护和开发这 3 个部分。这将使项目更具可扩展性(以防需要向主应用程序添加另一个子项目)。

这是一个可行的解决方案吗?

我应该使用 REST 服务而不是远程 EJB。 (对不起,如果我在这里误解了一些东西)?

我将通过主页访问其他 3 个部分。问题是我需要对每个应用程序进行单点登录。因此,通过在主页上登录,用户会自动登录其他 3 个应用程序。

我应该使用任何门户解决方案来使单独的 Web 应用程序协同工作吗?

【问题讨论】:

  • 出于性能原因,我认为使用 RESTful 服务而不是远程 EJB 会更好,但这并不意味着您根本不能拥有 EJB,请查看How to Combine REST Services with EJB 3.1
  • RESTFul Vs EJB :在 REST 情况下,由于它完全依赖于 http 协议,因此实现需要更少的基础设施并提供额外的可移植性。我们需要考虑的是如何对每个服务调用进行身份验证和授权。

标签: jsf jakarta-ee architecture


【解决方案1】:

如果您的所有应用程序都部署在单个服务器上,那么您可以为 EJB 使用本地接口而不是远程接口,这将是最快的实现。

【讨论】:

  • 如果我需要将应用程序部署在不同的物理服务器上以便将负载分布在整个应用程序上怎么办?
  • 我不知道远程 EJB 调用与 Web 服务的任何性能基准。使用 Web 服务会产生将数据从 Java 对象转换为 XML/JSON 的开销,如果使用 EJB,则不需要这样做。此外,EJB 还为您提供了更轻松的事务管理。