Java EJB3企业应用程序作为门户;客户端Web应用程序-体系结构/设计

Java EJB3企业应用程序作为门户;客户端Web应用程序-体系结构/设计,java,enterprise,portal,Java,Enterprise,Portal,如上图所示,我有一个EJB-3企业应用程序(EAR文件),它作为一个门户,包含3个web应用程序(WAR文件),它们与同一个数据存储进行通信和处理。这3个webapp不是portlet实现,而是通过企业应用程序的持久层与数据存储交互的普通webapp。这些Web应用程序是独立开发的,因此,其中一些使用企业应用程序的Web服务,一些使用EJB客户端 此外,还有一个替代这些webapp(Web App1、Web App2和Web App3)并使用独立的企业应用程序与数据库进行通信和交易的其他选项,如

如上图所示,我有一个EJB-3企业应用程序(EAR文件),它作为一个门户,包含3个web应用程序(WAR文件),它们与同一个数据存储进行通信和处理。这3个webapp不是portlet实现,而是通过企业应用程序的持久层与数据存储交互的普通webapp。这些Web应用程序是独立开发的,因此,其中一些使用企业应用程序的Web服务,一些使用EJB客户端

此外,还有一个替代这些webapp(Web App1、Web App2和Web App3)并使用独立的企业应用程序与数据库进行通信和交易的其他选项,如下所示:

现在,我的问题是:

1) 在上面列出的两个选项中,哪一个是最佳选项

2) 当我们将那些充当企业应用程序客户端的Web应用程序替换为独立的企业应用程序(EAR文件)时,会产生怎样的影响

3) 对于事务处理、SSO功能、可伸缩性和其他因素,什么是更好的模型

4) 还有其他更好的型号吗

编辑

1) 在第一个模型中,哪种方法是与EAR文件(Web服务或ejb客户机jar文件/库(接口和实用程序类))交互的首选方法


2) 这两种型号在内存使用(服务器RAM)和性能方面有何不同。有什么区别吗?

既然你这么抽象,我也会这么做。如果我们删除所有时髦的词,如“门户”、“企业应用程序”等等。。。最后我们有三个web应用程序和一个公共库或框架(企业应用程序)

看到它的应用程序尽可能简单。您有三个开发人员需要开发三个web应用程序。您将提供一些用于构建其应用程序的常用代码。您将使用的模型取决于您将向他们提供什么样的代码

1.-您将只提供一些UTIL和通用业务代码。也许古典图书馆能满足你的需要。(在Java EE环境中,您必须考虑如何利用持久性缓存级别2为单个数据存储共享会话工厂的优势)

2.-您将提供共享服务,如持久性、缓存、安全性、审核等。。。您将需要一个服务层作为第一个选项。您将拥有一个共享状态,因此只需要一个实例

3.-更常见的情况是为公共服务提供一些业务API和服务层

您没有指出任何要求,迫使您为您的场景使用更复杂的解决方案

编辑:

关于它是首选rmi(ejb客户端)还是Web服务。我总是使用rmi与地理位置相近的应用程序进行通信。它的使用很简单,而且协议比webservices快得多(您可以在google上搜索rmi webservices的性能,阅读很多关于这个主题的比较)
另一方面,rmi对网络延迟更敏感,需要特殊的防火墙配置,而且它比Web服务更耦合。因此,如果我假装向第三方提供服务或连接地理位置稀疏的服务器,我会更喜欢WebService甚至REST

关于最后一个问题,最初在同一台服务器上部署一个或十个应用程序没有任何区别。部署费用与应用程序的使用开销相比微不足道。当然,你必须把这当作一个一般性的假设。显然,应用程序的大小和部署方式将对内存消耗和其他方面产生影响


你必须考虑到,这个决定可以很容易地改变,因为你将需要。因此,正如我所说,您可以从简单的解决方案开始,如果您在部署应用程序时遇到问题,您可以轻松地重新构建您的耳朵

我倾向于同意费多克斯的观点。如果没有理由选择一种解决方案而不是另一种(业务原因、技术原因等),那么您也可以选择阻力最小的路径。在我看来,这将是第一个解决办法

一般来说,从简单开始,并根据需要增加复杂性。没有上下文,你的解决方案就没有意义。对于一个博客,银行应用程序需要考虑不同的因素


希望这有帮助

有一个新的平台叫做,这是一个非常成功的项目,价值数百万美元。
现在,让我们看看它是如何工作的,以及它是如何工作的,以便我们在理论上也能做到这一点:
它将项目与其数据库、web服务与其EJB等互连。 从他们的理念中,我们可以学到以下几点:

  • 创建main
    EJB
    无状态bean(API),其任务是传递消息 发件人:

    • web服务到其他web服务
    • web应用程序的web服务
    • web应用程序到其他web服务
  • 这个
    EJB
    的目的是首先在主数据库中进行验证 然后将调用传递给其他模块

  • 只有此EJB可以访问数据库,以更安全地保护连接
  • EJB
    将对消息进行排队,直到要发送的模块空闲 接受
  • 这个
    EJB
    将控制数据库中的所有进程
  • 这个
    EJB
    将决定将消息发送到哪里

  • 你为什么要考虑这两种选择?例如,它适用于不同的部署选项吗?另外,在选项2中如何分割数据访问?每个EAR是否对自己的数据拥有“所有权”,或者它们是否对整个数据集都具有完全的读/写访问权?如果分开,事务边界在哪里?每个耳朵只需要关注自己的边界吗?您有什么类型的数据存储,它会成为瓶颈吗。您的应用程序主要是读还是写。对不起,所有的问题-我希望这些不反映我自己的无知!罗姆斯基:我正在考虑这两种选择,你呢