2.ejb的体系结构:
ejb分布式应用程序是基于对象组件模型的,低层的事务服务用了api技术。ejb技术简化了用java语言编写的企业应用系统的开发,配置。ejb技术定义了一组可重用的组件:enterprise beans。你可以利用这些组件,象搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件有一个或多个enterprise beans,在加上一些配置参数。最后,这些enterprise beans被配置到一个装了ejb容器的平台上。客户能够通过这些beans的home接口,定位到某个beans,并产生这个beans的一个实例。这样,客户就能够调用beans的应用方法和远程接口。
ejb服务器作为容器和低层平台的桥梁管理着ejb容器和函数。它向ejb容器提供了访问系统服务的能力。例如:数据库的管理和事务的管理,或者对于其它的enterprise的应用服务器。所有的ejb 实例都运行在ejb容器中。
容器提供了系统级的服务,控制了ejb的生命周期。ejb中的有一些易于使用的管理工具如:
security-配置描述器(the deployment descriptor)定义了客户能够访问的不同的应用函数。容器通过允许授权的客户访问这些函数来达到这个效果。
remote connectivity-容器为远程链接管理着低层的通信issues,而且对enterprise beas的开发者和客户都隐藏了通信细节。ejb的开发者在编写应用方法的时候,就象是在条用本地的平台一样的。客户也不清楚他们调用的方法可能是在远程被处理的。
life cycle managment-客户简单的创建一个enterprise beans的实例,并通常取消一个实例。而容器管理着enterprise beans的实例,使enterprise beans实现最大的效能和内存利用率。容器能够这样来激活和使enterprise beans失效,保持众多客户共享的实例池。等等。
trasction management-配置描述器定义了enterprise beans 的事务处理的需求。容器管理着那些管理分布式事务处理的复杂的issues。这些事务可能要在不同的平台之间更新数据库。容器使这些事务之间互相独立,互不干扰。保证所有的更新数据库都是成功发生的,否者,就回滚到事务处理之前的状态。
ejb组件是基于分布式事务处理的企业级应用程序的组件。所有的ejb都有如下的特点:
ejb包含了处理企业数据的应用逻辑,定义了ejb的客户界面。这样的界面不受容器和服务器的影响。于是,当一个ejb被集合到一个应用程序中去时,不用更改代码和重新编译。
ejb能够被定制。各种系统级的服务,例如安全和事务处理的特性,都不是属于ejb类的。而是由配置和组装应用程序的工具来实现。
有两种类型的ejb: session beans 和 entity beans。session beans是一种作为单用户执行的对象。作为对远程的任务请求的相应,容器产生一个session beans 的实例。一个session beans有一个用户。从某种程度上来说,一个session bean 对于服务器来说就代表了它的那个用户。session beans 也能用于事务,它能够更新共享的数据,但它不直接描绘这些共享的数据。session beans 的生命周期是相对较短的。典型的是,只有当用户保持会话的时候,session beans 才是活着的。一旦用户退出了,session beans 就不再与用户相联系了。session beans被看成是瞬时的,因为如果容器崩溃了,那么用户必须重新建立一个新的session对象来继续会话。
session bean典型的声明了与用户的互操作或者会话。也就是说,session bean在客户会话期间,通过方法的调用,掌握用户的信息。一个具有状态的session bean称为有状态的session bean。当用户终止与session beans互操作的时候。会话终止了,而且,bean 也不再拥有状态值。session bean也可能是一个无状态的 session bean。无状态的session beans并不掌握它的客户的信息或者状态。用户能够调用beans的方法来完成一些操作。但是,beans只是在方法调用的时候才知道用户的参数变量。当方法调用完成以后,beans并不继续保持这些参数变量。这样,所有的无状态的session beans的实例都是相同的,除非它正在方法调用期间。这样,无状态的session beans就能够支持多个用户。容器能够声明一个无状态的session beans。能够将任何session beans指定给任何用户。
entity beans对数据库中的数据提供了一种对象的视图。例如:一个entity bean能够模拟数据库表中一行相关的数据。多个client能够共享访问同一个entity bean。多个client也能够同时的访问同一个entity bean。entity beans通过事务的上下文来访问或更新下层的数据。这样,数据的完整性就能够被保证。entity beans能存活相对教长的时间,并且状态是持续的。只要数据库中的数据存在,entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使ejb容器崩溃了,entity beans也是存活的。entity beans生命周期能够被容器或者 beans自己管理。如果由容器控制着保证 entity beans持续的issus。如果由beans自己管理,就必须写entity beans的代码,包括访问数据库的调用。
entity beans是由主键(primary key 一种唯一的对象标识符)标识的。通常,主键与标识数据库中的一块数据,例如一个表中的一行,的主键是相同的。主键是client能够定位特定的数据块。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器