EJB三个对象

EJB的三个对象 
1、Remote(或Local)接口
2、Home(或LocalHome)接口
3、企业Bean

说明:

1、Remote接口为远程接口的定义,定义一个远程接口的时候,该接口必须继承javax.ejb.EJBObject(这里,javax.ejb.EJBObject继承自java.rmi.Remote接口类)。自定义的远程接口中,可以定义业务方法列表,而这些方法应该抛出RemoteException异常,而且,在要实现的企业Bean中有相应的实现,这些企业Bean可以是会话Bean、实体Bean、消息驱动Bean。

2、Home接口为组件接口,即通过该接口中定义的查找、创建、删除企业Bean类实例的方法列表,可以创建一个EJBObject的对象(其实是获取到一个远程接口),从而获取到一个企业Bean的实例的引用,然后通过远程接口独傲用一个企业Bean中定义的方法,实现方法定义的功能。 Home接口是通过继承javax.ejb.EJBHome来定义的(这里,javax.ejb.EJBHome继承自java.rmi.Remote接口类)。

3、Home接口中方法列表的定义。这些定义的方法必须抛出RemoteException,并且,根据方法实现功能的不同,还需要抛出方法的动作异常,例如,如果是创建方法,还应该抛出CreateException,如果是移除方法,还应该抛出RemoveException。

4、EJB是服务器端组件。企业Bean才是最核心的。企业Bean可以是会话Bean、实体Bean、消息驱动Bean。

5、客服端调用EJB对象的基本步骤是,首先设置JNDI服务工厂以及JNDI服务地址系统属性,然后查找到Home接口,接着从Home接口调用Create方法创建Remote接口,最后通过Remote接口调用其业务方法。

6、如果EJB组件提供分布式计算服务,需要远程调用,执行业务,这时一个EJB组件具有的EJB对象为:Remote接口、Home接口,企业Bean;
如果EJB组件提供本地服务,需要提供本地接口和本地组件接口,这时一个EJB组件具有的EJB对象为:Local接口、LocalHome接口,企业Bean。

■ EJB服务器和EJB容器

EJB服务器是管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。EJB服务器也可以提供厂商自己的特性,如优化的数据库访问接口,
对其他服务的访问。一个EJB服务器必须提供对可访问JNDI的名字服务和事务服务支持。

EJB容器是一个管理一个或多个EJB类/实例的抽象。它通过规范中定义的接口使EJB类访问所需的服务。容器厂商也可以在容器或服务器中提供额外服务的接口。容器开发商提供运行在EJB服务器中一套完成这些功能的工具和接口。 这些服务包括:
  ·与二级存储中交换(对会话bean)
  ·持久性管理(对实体bean)
  ·实现创建和查找服务的home object的可用性
  ·在可通过JNDI访问的名字空间home object的可视性
  ·正确的创建、初始化和删除bean
  ·保证商业方法正确地运行在事务上下文中
  ·实现某一基本的安全服务
  ·从home object和EJBObject上的RMI上产生stub和skeleton

说明:

EJB服务器供应商一般将EJB容器集成到EJB服务器中。

■ EJB规范规定EJB中禁止的操作

1、不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等)
2、不能操作awt
3、不能实现服务器功能
4、不能对静态属生存取
5、不能使用IO操作直接存取文件系统
6、不能加载本地库
7、不能将this作为变量和返回
8、不能循环调用

■ EJB的角色

EJB有六个角色,分别为:

EJB组件开发者(Enterprise Bean Provider) 
应用组合者(Application Assembler)
部署者(Deployer)
EJB 服务器提供者(EJB Server Provider)
EJB 容器提供者(EJB Container Provider)
系统管理员(System Administrator)

说明:

一个完整的基于EJB的分布式计算结构由上述六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。

■ EJB会话Bean

会话Bean(SessionBean)在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。

会话Bean包括两种:无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)。

说明:

1、无状态会话Bean(Stateless Session Bean)的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。无状态会话Bean(Stateless Session Bean)的优势却在于他可以维持使用者的状态。

2、当客户机第一次调用一个有状态会话Bean(Stateful Session Bean)时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用有状态会话Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。有状态会话Bean(Stateful Session Bean)会消耗 J2EE Server 较多的内存。

 

你可能感兴趣的:(J2EE)