Web服务器在j2ee体系结构中的作用

时间:2014-07-21 03:25:16

标签: java-ee deployment architecture 3-tier

我在机器1(iSeries服务器)的Websphere Application Server中部署/运行的应用程序。在机器2(AIX服务器)上运行的数据库。使用IBM HTTP Server作为机器3(Windows Server)上的反向代理服务器。

以下是我的EAR文件的结构。

机器1

+ HelloWorldEAR
    + META-INF
    + HelloWorldWAR  // Struts/JSP
        + WEB-INF
    + HelloWorldEJB.jar

这个应用程序是否符合3层架构,虽然我的整个应用程序(EAR)位于一台机器上?

或在一台机器上部署Web服务器中的WAR文件,在另一台机器上部署应用程序服务器中的EJB? Web和App Server在j2ee架构中的作用是什么?始终在两台不同的机器中部署表示逻辑(servlet / jsp)和业务逻辑(ejb)是一种好习惯吗?有没有任何标准的方法来设计j2ee应用程序,以便可以在每个层中部署每个层?

2 个答案:

答案 0 :(得分:0)

3层并不一定意味着将每个层放在单独的机器上。您的应用程序也可以在所有人的耳中(或战争),并清楚地分离表示,业务逻辑和持久性。

在不同的计算机上进行部署是出于其他原因,例如安全问题(将业务或数据库服务器置于另一个防火墙后面)或出于性能原因(在多台计算机上分配负载)或由于可用性要求(具有多个集群内的节点。)

因此,在做出有关分销的决定时,您必须从这些非功能性要求的角度来看待。正如Adam Bienworkshops"不要分发" - 意思是,如果没有要求这样做,请保持简单,因为分配总是意味着更复杂。

PS:不要使用" J2EE"它已经(在您的标签中使用)" Java EE"一段时间了。

答案 1 :(得分:0)

  

这个应用程序是否符合3层架构,尽管我的整体   应用程序(EAR)位于一台机器上?

可能是的,因为它有表示层(通过JSP / Struts),业务逻辑层(通过EJB)和数据(可能还没有,因为你的hello应用程序现在可能不会存储任何数据)。 / p>

  

Web和App Server在j2ee架构中的作用是什么?

Web服务器通常充当安全代理(位于DMZ区域中)并将请求转发给应用程序服务器。它还可以充当负载均衡器,将请求分发到群集中的许多服务器。如果您有非常丰富的表示层,例如大量的闪光。大型静态文件等您可以将这些文件放到Web服务器上,因为它们不需要从应用程序服务器提供。

另一方面,应用程序服务器应放在Intranet区域,并负责运行动态应用程序。

  

始终在两台不同的计算机上部署表示逻辑(servlet / jsp)和业务逻辑(ejb)是一种好习惯吗?

不,这不是一个好的做法,因为性能显着下降(您在流程和优化过程中失去了许多优势,需要在层之间进行远程调用),这增加了环境和管理的复杂性。

  

是否有任何标准的方法来设计j2ee应用程序,以便可以在每个层中部署每个层?

正如我之前所写,不再推荐,在EJB 1.1中有一个时刻,当你只有远程接口时,建议时,但不再是。如果您真的想要这样做,您将需要使用通过某种远程接口(EJB,Web服务,休息......)公开的Facade创建业务层(通常是EJB)。