一起学习
J2EE应用程序中的Enterprise Beans
当编写管理特定业务功能(比如追踪雇员资料或进行复杂财务计算)的J2EE应用程序时,请将完成这些任务的业务逻辑放置在EJB层的 enterprise beans中。以这种方式,我们就可以使代码集中在解决手边的业务问题,而利用enterprise bean容器来支持低层服务,比如状态管理、事务管理、线程管理、远程数据访问和安全等。
将业务逻辑与低层系统逻辑分开意味着容器可以在运行时创建和管理enterprise bean。按照规范编写的任何enterprise bean,都可以根据其在一个特定的J2EE应用程序中将被如何使用来对其事务管理或安全属性进行配置,并可以被部署到任何一个与规范兼容的容器中。可再用组件使不必改变和重新编译enterprise bean代码成为可能 。
一个enterprise bean由接口和类组成。客户程序通过enterprise bean的home和远程接口来访问enterprise bean的方法。Home接口提供了创建、删除和定位enterprise bean的方法,而远程接口则提供了业务方法。在部署时,容器由这些接口来创建类,使客户能够创建、删除、定位或调用位于enterprise bean上的业务方法。enterprise bean类提供了业务方法、创建方法和查寻方法的实现。如果enterprise bean管理它自己的持久性的话,还为其生命期方法提供了实现。
有两种Enterprise beans:entity beans和session beans。
一个session bean代表与客户程序的一个短暂的会话,而且可能执行数据库读写操作。一个session bean可能会自己调用JDBC,或者它可能使用entity bean来完成此种调用。在后者这种情况下,这个session bean是该entity bean的客户。一个session bean的域包含会话状态,而且是短暂的。如果服务器或者客户程序崩溃,该session bean就丢失了。这种模式通常被用于像PL/SQL这样的数据库程序设计语言上 。
一个entity bean代表一个数据库中的数据及作用于该数据的方法。在一个关系型数据库中的雇员信息表中,每一行都有一个bean来代表。entity beans是事务的,并且是长寿命的。只要数据留在数据库中,entity bean就存在。这个模式可以被很容易地用于关系型数据库,而不仅限于对象数据库。
Session beans可以是有状态的,也可以是无状态的。一个有状态的session bean包含代表客户程序的会话状态。该会话状态是该session bean实例的域值加上这些域值所引用到的所有对象。有状态session beans并不代表在一个持久数据存储中的数据,但是,它可以代表客户程序访问和更新数据。
无状态session beans没有用于某个特定客户程序的任何状态信息。它们通常被用于提供不保持任何特定状态的服务器端行为。无状态session beans要求更少的系统资源。一个提供一种一般服务,或用于表示被存储的数据的一个被共享的视图的业务对象是无状态session bean的一个例子 。
因为enterprise beans占用可观的系统资源和带宽,可能希望将某些业务对象构造成数据访问对象或值对象。数据访问对象完成诸如代表客户程序访问数据库等工作。值对象用于代表容纳数据字段并提供简单的“get和set”方法来访问这些数据的一个结构 。
另外,可以将程序构造成使用enterprise bean在客户和EJB层的其它部分之间承担通信的任务 。
一个使用容器管理的持久性来访问一个关系型数据库的enterprise bean,并不要求在bean的代码中使用任何JDBC 2.0 API来进行数据库访问,因为容器完成了这些工作。然而,如果使用bean管理的持久性,或者我们要访问一个非关系型数据库的企业信息系统,那么我们就必须在bean中提供相应的代码来完成这些工作 。
在一个enterprise bean使用bean管理的持久性来访问一个数据库的情况下,必须使用JDBC 2.0 API代码来实现该enterprise bean的生命期方法,以便处理数据的加载和存储,以及在运行时系统和持久数据存储之间维持数据的一致性。
一个使用bean管理的持久性的enterprise bean,或一个需要访问企业信息系统的Web组件必须提供合适的代码。这些代码可能是用于进行数据库访问的JDBC 2.0 API;或是用于访问一个特定企业信息系统的企业信息系统API;或是用于抽象企业信息系统API的复杂性和低层细节的一个访问对象,或是用于访问企业信息系统资源的一个连接对象。
尽管Web层使用HTTP或HTTPS来在各层之间传输数据,但是,EJB层使用的是RMI-IIOP。RMI-IIOP是一个完整的分布式计算协议,能让任何访问一个enterprise bean的客户层程序或Web层程序直接访问EJB层的服务。这些服务包括用于查找和引用enterprise beans的JNDI,发送和接收异步消息的Java Message Service(JMS),以及用于关系型数据库访问的JDBC。
相关连接:
J2EE 蓝图摘要一
J2EE 蓝图摘要二——J2EE基本架构:概述
J2EE 蓝图摘要三——可重用的应用组件
J2EE 蓝图摘要三——设计用户界面和引擎
J2EE 蓝图摘要四——设计基于Web的应用程序
J2EE 蓝图摘要五——Servlets和JSP页面
J2EE 蓝图摘要六——模型,视图和控制器架构
J2EE 蓝图摘要七——J2EE应用程序中的Enterprise Bean
J2EE 蓝图摘要八——宠物商店应用程序
下载本文示例代码
J2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise BeanJ2EE 蓝图摘要七——J2EE应用程序中的Enterprise Bean
阅读(117) | 评论(0) | 转发(0) |