2006年,Sun公司提出了Java EE的概念,与之同步的出现了两个规范:JSF 1.2和EJB 3.0,经典的Java EE应用往往以EJB(企业级Java Bean)为核心,以应用服务器为运行环境,所以通常开发运行成本较高。而今天我们所说的往往是指SSH(Struts+Spring+Hibernate)组合,SSH组合是一种轻量级的Java EE平台,具有高度的实用性和可扩展性。基于轻量级的Java EE平台的应用可以运行在普通Web容器中,无需EJB容器的支持,且一样具有稳定的性能和极高的可扩展性、可维护性。

Java EE 应用的分层模型

  •  Domain Object(领域对象也可称持久化对象)层:此层由系列的Pojo(Plain Old JavaObject)组成,这些对象是该系统的 Domain Object,往往包含了各自所需要实现的业务逻辑方法。
  • DAO (Data Access Object,数据访问层):此层由系类的DAO组件组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。经典Java EE应用中DAO层又称为EAO层,因为EAO完成了对实体(Entity)的CURD操作。
  • 业务逻辑层:此层由系类的业务逻辑对象组成,是系统的核心组件,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴漏Domain Object 对象所实现的业务逻辑方法,也可能是依赖DAO组件实现的业务逻辑方法。通常一个业务逻辑方法对应一次用户操作,一个业务逻辑方法应该是一个整体的,因此我们需要对业务逻辑方法增加事务性,业务逻辑方法仅仅负责实现业务逻辑,不应该进行数据库访问,所以在业务逻辑层中不应该出现原始的Hibernate、JDBC等API。
  • 控制器层:此层由系列的控制器组成,对于Java EE的MVC框架而言,框架提供了一个核心的前端控制器,而核心控制器负责拦截用户请求,并将请求发给用户实现的控制器组件。这些用户实现的控制器用于拦截用户的请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
  •  表现层:此层由系列的JSP界面、FreeMarker界面、PDF文档视图组成,负责收集用户的请求,并将显示处理结果。

各层的Java EE组件之间以松耦合的方式耦合在一起,各组件并不以硬编码方式耦合,这种方式是为了应用以后的扩展性。从上到下,上面的组件的实现依赖于下面组件的功能;从下到上,下面的组件支持上面组建的实现。

常用的Java EE服务器

采用SSH的Java EE框架是一种轻量级的框架,它无需专业的Java EE服务器支持,只需要简单的Web服务器就可以运行。Java领域常见的Web 服务器都是开源的,而且具备很好的稳定性。

常用的Web服务器有如下三个:

  • Tomcat:tomcat与Java结合的最好,是Sun公司推荐的JSP服务器。Tomcat是开源的Web服务器,经过长时间的发展,性能、稳定性等方面都非常优秀。
  • Jetty:另一个优秀的Web服务器。Jetty有个更大的优点就是,Jetty可以作为一个嵌入式服务器,即:如果在应用中加入Jetty的Jar文件,应用可在代码中对外提供Web服务。
  • Resin:目前最快的JSP、Servlet运行平台,支持EJB。个人学习该服务器是免费的,但如果将该服务器作为商业使用,则需要交纳相应的费用。

除了上面的Web服务器外,还有一些专业的Java EE服务器,相对于Web服务器而言,Java EE服务器支持更多的Java EE特性,例如分布式事务,EJB容器等。常用的Java EE服务器有如下几个。

  • JBoss:开源的Java EE服务器,目前支持EJB 3.0技术。
  • WebLogic 和WebSphere :这两个是专业的商用Java EE服务器,价格不菲。但在性能等各个方面都是相当的出色。

对于轻量级的Java EE而言,没有必要使用Java EE服务器,使用简单的Web容器就已经完全能胜任了。