Tutorial EJB - Stateless & State

2017-07-07  本文已影响0人  wang_yuw

Stateless Bean

无状态的会话 Bean 是一种企业 Bean,他通常被用于执行独立操作。顾名思义,他与客户端状态无关,但是他可能会保留他的实例状态。EJB 容器通常创建一个含有几个无状态 Bean 的池(pool),并且用这些对象来处理客户端的请求。因为这个池,实例变量的值不能被保证进行同样的方法调用。

创建一个无状态 Bean 的步骤:

1. 创建一个 Remote/Local 的接口来表示业务方法;

2. 这个接口要通过 EJB 客户端应用来使用;

3. 使用 @Local 注解,当EJB客户端与要被部署的EJB会话Bean在同一环境中时;

4. 使用 @Remote 注解,当EJB客户端与要被部署的EJB会话Bean不在同一环境中时;

5. 创建一个实现以上接口的无状态的会话 Bean;

6. 使用 @Stateless 注解来表示这是一个无状态的会话 Bean,EJB 容器就会在部署时通过这个注解自动的创建所需的相关的配置和接口。

如下图所示,这是一个叫 ExempleBean 的无状态的 Local 的会话 Bean,他有一个 hello 方法来输出一些信息:

无状态的 Local 会话 Bean

如下图所示,这是一个叫 ExempleBean 的无状态的远程 Remote 的会话 Bean:

无状态的远程会话 Bean

此外,要想使用注解,必须加入相应的包,否则会报错:

需要加入的包

Stateful Bean

有状态会话Bean也是一种企业 Bean,他保留与客户端的会话状态。也就是说,他在实例变量上与客户端保持一定的联系。EJB 容器创建了一个单独的有状态的会话 Bean 来处理客户端的每个请求。一旦请求域结束,有状态会话 Bean 会被销毁。

创建一个有状态Bean的步骤:

基本步骤与 Stateless Session Bean一样,除了他需要使用 @Stateful 注解来表示。

如下图所示,这是一个叫 StatefulBean 的有状态的 Local 的会话 Bean:

有状态的 Local 会话 Bean

如下图所示,这是一个叫 StatefulBean 的有状态的远程 Remote 的会话 Bean:

有状态的远程会话 Bean

下次预告:我将会讨论到如何把一个 Stateless Session Bean 与一个 Servlet 关联起来。

上一篇 下一篇

猜你喜欢

热点阅读