J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。
在传统的不分层的软件架构中,客户端担当了过多的角色而显得庞大而且不容易进行维护和修改,扩展性非常差,它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层。使得扩展性和重用性得到大大的提高。
下面谈一下J2EE体系中比较典型的四层应用模型 。
(1)Client tier客户层,运行在客户端机器上。客户层普遍地支持HTTP协议,也称客户代理。
(2)WEB tier WEB应用层,运行在J2EE服务器上。
在J2EE中,这一层由WEB 容器运行,它包括JSP, SERVLET等WEB部件。
(3)EJB tier 企业组件层,运行在J2EE服务器上。
企业组件层由EJB容器运行,支持EJB, JMS, JTA 等服务和技术。
(4)EIS tier 企业信息系统(Enterprise information system)层,运行在EIS服务器上
企业信息系统包含企业内传统信息系统如财务,CRM等,特点是有数据库系统的支持。
J2EE的整个应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元。J2EE的四层模型的每一层都也是对相近功能的组件的封装。
下面简单介绍这四层组件的主要内容,每层都包括一些相应的组件,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。
(1)客户端组件
J2EE应用程序可以是基于web方式的,也可以是基于传统方式的。一般为静态HTML网页、应用客户端程序、applets或其他应用。
(2)J2EE web层组件主要包括JSP 页面或Servlets.此外web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。其实就是一些的不涉及到数据库的简单业务逻辑,能减轻客户端的负担。
(3)业务层顾名思义就是用来处理业务了,他主要是由运行在业务层上enterprise bean 进行处理.
(4)企业信息系统层处理企业信息系统软件,包括企业基础建设系统例如企业资源计划(ERP), 大型机事务处理, 数据库系统,和其它的遗留信息系统.总的来说就是数据库和其他一些需要与之交互的独立系统。
总结构和内容如下图:
此外谈一下JSP。
JSP在这四层模型中放到了第二层web应用层组件中,但是JSP也确实可以直接在浏览器中浏览,可以做为客户端。但为什么被放到应用层了呢?
对于最小型的Web站点,完全可以直接使用JSP来构建动态网页,这种站点最为简单,所需要的也是基本的功能。对于这种开发模式,一个JSP和Servlets就可以完成,但是当系统规模增大的时候,这样的结构不适合多个客户同时访问资源,这样同时会有大量的请求需要服务端来处理。每个请求都会建立一个连接,消耗一定的资源。这样,需要让这些连接共享一些资源。对客户端造成极大的压力。
另外该结构也会导致JSP中出现大量的JAVA代码。这虽然对java程序设计人员不会有什么问题,可是大量的代码分散在JSP中,专做网页的美工可不一定都懂jsp,将jsp放到客户端不利于维护和修改,。
所以最好是使用静态的HTML文件作为web软件的客户端,所需资源较少,维护交流也方便。