无状态会话bean用于完毕在单个方法的生命周期内的操作。无状态bean能够实现很多业务操作,可是每一个方法都不能假定不论什么其它的方法会在它之前调用。后半句的意思是如今的你可能不是刚才的你。明天的你可也能不是今天的你,这个时候你就叫做“无状态你”。

上面的阐述听起来像是无状态的bean的一个局限,好像每次再见就像永别似的。

可是这是迄今为止业务服务最常见的形式,就像去饭店吃饭,点菜的服务员与给你上菜的服务员是不是同一个这不是我们所关心的。

无状态回话bean不同于适合在对话中积累状态(如零售应用程序的购物车)的有状态会话bean。无状态回话bean旨在很有效的运行独立操作。无状态会话bean这样设计的目的也是考虑到server忍受不了大量client的时候对资源的占用。

会话bean定义分为例如以下两个部分:

l  零个或多个业务接口。定义了一个client在bean上能够调用的方法。

当未定义接口时,bean的实现类的公共方法集合形成了一个逻辑client接口。

l  实现这些接口的类,称之为bean类,採用@Stateless注解进行标记。

大多数会话bean有一个业务接口,可是对会话bean能够向其client公开的接口数量是没有限制。当server遇到@Stateless注解时,它会知道把该bean当做一个会话bean。

它将在EJB容器中配置这个bean,使得应用程序的其它组件能够使用它。

以下的这个EJB版本号的Hello World样例中包括了一个业务接口。在此演示样例中包括了一个单一的方法。没有注解或者父接口来指明这是一个业务接口。和一般的类实现接口看起来是一模一样的。当会话bean实现它时,将会自己主动把它视为一个本地业务接口,意味着仅仅有在同一个应用程序server上的client能够訪问它。

为了强调一个接口是本地业务接口,能够选择把@Local注解加入到该接口上。

public interface HelloService {
public String sayHello(String name);
}

如今考虑接口的实现。以下的代码展示的是一个实现了上面接口的常规Java类 。这个类唯一特别的是@Stateless注解,标记它是一个无状态会话bean。

业务方法实现上没有不论什么特殊的限制或要求,它恰好是一个EJB的常规类。

@Stateless
public class HelloServiceBean implements HelloService {
public String sayHello(String name) {
return "Hello, " + name;
}
}

关于无接口视图

在EJB3.1中引入无接口视图(no-interface-view),它支持本地会话bean能够没有实现接口。这使得定义一个本地会话bean以及訪问这个本地会话bean更加简单。如以下代码所看到的使用无接口视图定义上面代码中同样的HelloServiceBean,开发者仅仅需创建实现类,无需实现不论什么业务接口:

@Stateless
public class HelloServiceBean {
public String sayHello(String name) {
return "Hello, " + name;
}
}

会话bean的逻辑接口包括了它的公共方法,在本例中是sayHello()方法。client把HelloServiceBean类当做接口一样使用,不必考虑不论什么非公开的方法或实现的具体信息。

能够想象server内部向client提供了一个代理接口,这个代理覆盖业务方法以提供标准的容器服务,client将与这个代理进行交互。

无接口视图的长处之中的一个是简单。

它不须要实现一个冗余的业务接口,并进一步使得EJB看起来像是常规JavaBean类。

然而,由于无接口视图仅适用于本地回话bean。本例中採用传统样式的独立接口,从而保证无状态和有状态会话bean一致。

对于无状态会话bean类的定义仅仅须要注意两点。第一是它须要一个无參数的构造函数,可是当没有其它的构造函数时。编译器一般会自己主动生成此构造函数。第二是不应该使用静态字段,这主要是由于bean的又一次部署问题。

很多EJB容器创建一个无状态会话bean的实例池。然后选择随意的一个实例以服务每一个client请求。由于这不能保证调用之间将使用同样的状态,所以不能觉得点菜的服务员与给你上菜的服务员一定是同一个人。

无状态会话bean(1)---定义的更多相关文章

  1. EJB开发第一个无状态会话bean、开发EJBclient

    开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与client交互,是编写业务逻辑的地方.在会话bean中能够通过JDBC直接操作数据库.但大多数 ...

  2. JBoss+Ant实现EJB无状态会话bean实例

    EJB分为session bean.entity bean.message-driven bean,session bean又分为无状态会话bean和有状态会话bean. session bean负责 ...

  3. EJB开发第一个无状态会话bean、开发EJB客户端

    开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下 ...

  4. 无状态会话Bean、有状态会话Bean、CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码?

    无状态会话Bean.有状态会话Bean.CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码? A.无状态会话Bean B.有状态会话Bean C.CMP D.BMP 解答:C

  5. 无状态会话bean(3)---远程业务接口(没有排版)

    迄今为止,我们仅仅讨论了使用一个本地业务接口的会话bean.在这样的情况下.本地意味着仅仅能由执行在同一个应用程序server实例的JavaEE组件声明会话bean的依赖性.比如.远程client不可 ...

  6. (转)Spring Bean Scope 有状态的Bean 无状态的Bean

    有状态会话bean   :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一 ...

  7. 有状态的bean和无状态的bean的区别

    有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一个初 ...

  8. 有状态无状态回话bean

    1.有状态(Stateful) 可以在不同的方法调用间保持针对各个客户端的状态 与客户端的联系必须被维持,这样做开销要大一些 有状态也可以这样理解,它存在存储能力,也就是说至少有一个属性来标识它目前的 ...

  9. Ejb in action(四)——购物车实例演示有状态会话Bean

    前面.我们介绍了一个入门实例.事实上那就是无状态回话Bean的经常使用情况. 上一篇文章中.我们介绍了无状态会话Bean和有状态会话Bean的相关概念.为了加深大家对它们的理解,我们一起来实现一个有状 ...

随机推荐

  1. 注解:@SuppressWarning()的用法

    @SuppressWarning() 作用:J2SE 提供的一个批注或者注解.该批注的作用是给编译器一条指令,忽略这些警告信息. 常用:unchecked,serial. 1.如果传入多种情况,这几种 ...

  2. JAVA文件读取FileReader

    JAVA文件读取FileReader 导包import java.io.FileReader 创建构造方法public FileReader(String filename),参数是文件的路径及文件名 ...

  3. CCF模拟题 有趣的数

    有趣的数 时间限制: 1.0s 内存限制: 256.0MB   问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都 ...

  4. ArcGIS Engine中添加点、线、面元素

    转自原文 ArcGIS Engine中添加点.线.面元素 此种方式为IElement的方式在axMapControl的GraphicsContainer中好绘制图形. //画点 IPoint pt = ...

  5. RvmTranslator6.2 is released

    RvmTranslator6.2 is released eryar@163.com RvmTranslator can translate the RVM file exported by AVEV ...

  6. Java io流的学习

    近期几天细致学了Java的io流.本来是打算看视频通过视频来学习的.但是后来发现事实上视频看不怎么懂也感觉不是非常easy上手,所以就通过百度和api文档学习了Java的io流 io流能够有两个分类, ...

  7. js---16继承

    123 instanceof Number;//false,要左边是对象右边是函数 typeof 123 ; //number new Number(123) instanceof Number; / ...

  8. OpenCV —— 矩阵和图像操作

    cvAbs , cvAbsDiff , cvAbsDiffS cvAdd , cvAddS , cvAddWeighted(可添加权重) #include <cv.h> #include ...

  9. 运动识别之HOJ3D和HMM

    http://cvrc.ece.utexas.edu/Publications/Xia_HAU3D12.pdf   View Invariant Human Action Recognition Us ...

  10. ElasticSearch 5.2.2 集群环境的搭建

    在之前 ElasticSearch 搭建好之后,我们通过 elasticsearch-header 插件在查看 ES 服务的时候,发现 cluster-health 显示的是 YELLOW. Why? ...