【J2EE】总结
一、组件-容器模型:
J2EE是一个基于组件-容器模型的系统平台,其核心概念是容器,容器是指为特定组件提供服务的一个标准化的运行时环境,JAVA虚拟机就是一个典型的容器。组件是一个可以部署的程序单元,它以某种方式运行在容器中,容器封装了J2EE底层的API,为组件提供事务处理、数据访问、安全性、持久性等服务。在J2EE中组件和组件之间并不直接访问,而是通过容器提供的协议和方法来互相调用。组件和容器间的关系通过“协议”来定义。容器的底层是J2EE服务器,它为容器提供J2EE中定义的各种服务和API。一个J2EE服务器(也叫J2EE应用服务器)可以支持一种或多种容器。
二、J2EE的核心——EJB:
J2EE定义了四种组件:Applet组件、Application客户组件、Web组件及EJB(Enterprise JavaBeans)组件。其中Applet和Application客户组件在客户端运行,J2EE通过java插件为Applet提供运行环境,Application客户的容器就是本地java虚拟机;Web及EJB组件在服务端运行。J2EE中包含JSP和Servlet两种Web组件,它们是Web服务器的功能扩展,都能生成动态Web页面。不同的是JSP是将java代码嵌入到Html中,服务器负责解释执行,生成结果返回用户(与ASP技术相似);而Servlet是单独的java类,它动态生成Html文件返回给客户。Web组件的容器比较典型的就是基于JAVA的Web服务器。
EJB是J2EE平台的核心,也是J2EE得到业界广泛关注和支持的主要原因。众所周知J2EE的一个主要目的就是简化企业应用系统的开发,使程序员将主要精力放在商业逻辑的开发上。EJB正是基于这种思想的服务器技术,它本身也是一种规范,该规范定义了一个可重用的组件框架来实现分布式的、面向对象的商业逻辑;其核心思想是将商业逻辑与底层的系统逻辑分开,使开发者只需关心商业逻辑,而由EJB容器实现目录服务、事务处理、持久性、安全性等底层系统逻辑。
一个可部署的EJB组件包含3个部分:Remote接口、Home接口和EnterPrise Beans类。
(1)Remote 接口Remote接口定义EJB组件中提供的可供用户调用的方法,也就是通常所说的实现商业逻辑的函数或过程(如计算商品价格的函数),以供远程客户端调用。在EJB组件部署到容器的时候,容器会自动生成Remote接口相应的实例,即EJB对象,它负责代理用户的调用请求。
(2)Home接口Home接口定义了一组方法来创建新的EJB对象,查找,定位和清除已有的EJB对象。在EJB组件部署时,容器也会自动生成相应的Home对象,该对象负责查找和创建EJB对象,返回EJB对象的引用给客户;用户利用该应用调用EJB组件的方法,得到结果;最后Home对象清除EJB对象。可以形象地称Home接口为EJB对象的工厂。
(3)Enterprise类Enterprise Beans 类是商业逻辑的具体实现类。它可供用户调用的方法在Remote接口中定义。根据功能不同,EJB2.0规范中定义了三种EnterpriseBeans:会话Beans(Session Beans)、实体(Entity Beans)和消息驱动Beans(Message-driver Beans)。
[1]会话Beans分无状态和有状态两种。一般无状态的会话Beans模拟商业逻辑,比如计算价格等。有状态的会话Beans通常模拟一个客户会话,它会临时保存客户信息,根据客户要求调用其他Beans来存取数据。两种会话Beans都不保存状态信息或数据,当客户断开连接或服务器关闭时,会话Beans也随之消失。一个会话Beans的典型例子是网站上的购物车。
[2]实体Beans模拟商业数据,并表示一个数据存储,可以是状态信息或数据库中的一条记录。实体Beans在客户断开连接或服务器关闭后,仍有服务保证其数据得以保存。一个实体Beans的典型例子就是客户账号信息。
[3]消息驱动Beans在行为上很像会话Beans。不同的是仅在需要向这些Beans发送消息时才调用消息驱动Beans,比如在需要是时候发送用户确认信息等。