1
、
EJB
的分类
EJB2
中,分为会话
Bean
、实体
Bean
和消息驱动
Bean
。
EJB3
中,分为会话
Bean
和消息驱动
Bean.
会话
Bean
强调的是业务处理,是功能,完成处理。
实体
Bean
完成对数据的操作,对数据的增删改查。
消息驱动
Bean
,与会话
Bean
和实体
Bean
的访问方式不同。对会话
Bean
和实体
Bean
的访问采用方法调用(同步,串行),消息驱动
Bean
,是消息服务中的消息接受者,客户端需要访问消息驱动
Bean
的时候,给消息驱动
Bean
发送消息,采用异步方式。
2
、会话
Bean
的分类
会话
Bean
分为有状态会话
Bean
和无状态会话
Bean
。
区别在于多次对
EJB
的访问之间,服务器是否为客户端保存信息,例如银行的柜员在执行每个操作的时候,都需要记录当前柜员的身份信息,可以采用有状态会话
Bean
保存柜员的信息,柜员每次操作的时候不需要提供这些信息。对于客户的信息,每个操作都是不同的,服务器没有必要记录信息,采用无状态会话
Bean
。
无状态因为不保存信息,所以效率要高一些,尽量使用无状态会话
Bean
。
3
、编写会话
Bean
需要提供哪些文件
实现功能的
JavaBean
,要实现所有的功能,可以是普通的
JavaBean
,是
EJB
的核心,也是
EJB
提供者的主要工作。
供客户端访问的接口,或者提供本地接口,或者提供远程接口,或者两个都提供,必须提供一个。客户端通过接口与
EJB
所在的容器进行交互。
EJB
接口中必须声明能够被客户端访问的所有方法,如果不声明,客户端就不能访问。
提供配置信息,包括
EJB
自身的信息和对服务器的要求。可以通过
XML
配置文件或者通过元注释(
EJB3
中)声明。
4
、容器的作用
EJB
必须部署到服务器上,客户端对
EJB
的访问是通过容器进行中转的,
EJB
的客户端是不能直接访问
EJB
的实例。容器管理
EJB
,并为
EJB
提供需要的服务。
5
、客户端如何访问会话
Bean
EJB
对象部署到服务器上之后,会绑定到
JNDI
树上。要访问
EJB
,首先连接到
JNDI
树,然后根据
EJB
的
JNDI
名字查找到
EJB
对象,然后调用
EJB
对象的方法。
EJB
对象是服务器根据
EJB
提供者提供的接口创建的类的对象。对
EJB
对象的方法调用,会转发给
Bean
实例。
6
、如何编写
Bean
类
首先,
Bean
类是一个普通的
JavaBean
;
需要声明
Bean
类为有状态会话
Bean
或者无状态会话
Bean
,使用
@Statefull
或者
@Stateless
。
要实现业务接口(供客户端访问的接口),实现接口中声明的所有方法;
实现业务方法,包括接口中声明的方法以及其他辅助方法。
7
、如何编写业务接口
它是普通的
Java
接口;
需要声明所有可以供客户端访问的方法。
需要声明该接口是供远程访问还是供本地访问,通过
@Remote
或者
@Local
。