无状态会话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. while my time-- , will the meaning++?

    // while my time--,will the meaning++? // However,what's the meaning of life ? while(tomorrow>0){ ...

  2. rm---删除目录huo文件

    rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 注意:使用rm命令要格外小心.因为一旦 ...

  3. Oracle Database Sample Schemas

    本文在Creative Commons许可证下发布 最近在钻研Oracle 11gR2,写SQL缺乏Demo表,研究他家的官方资料时发现一块甲骨文已经给我们准备Sample Schemas.比如说SC ...

  4. 【CS Round #37 (Div. 2 only) D】Reconstruct Graph

    [Link]:https://csacademy.com/contest/round-37/task/reconstruct-graph/statement/ [Description] 给你一张图; ...

  5. Yum数据库错误

    使用yum时提示数据库错误: /var/lib/rpm... open... db4 error from db->close:... 解决办法: 1.删除/var/lib/rpm目录下的__d ...

  6. [Python] Handle Exceptions to prevent crashes in Python

    Exceptions cause your application to crash. Handling them allows you to recover gracefully and keep ...

  7. php实现简单算法3

    php实现简单算法3 这篇文章主要介绍了PHP经典算法集锦,整理了各种常见的算法,包括排序.查找.遍历.运算等各种常见算法原理与实现技巧,需要的朋友可以参考下 1.首先来画个菱形玩玩,很多人学C时在书 ...

  8. 3.索引与string进行映射实现高效查找

    #include <iostream> #include <typeindex>//类型索引 #include <unordered_map>//红黑树 #incl ...

  9. OpenCV特征点检测——ORB特征

            ORB算法 目录(?)[+] 什么是ORB 如何解决旋转不变性 如何解决对噪声敏感的问题 关于尺度不变性 关于计算速度 关于性能 Related posts 什么是ORB 七 4 Ye ...

  10. 深入理解Android(4)——理解Android中的JNI(下)

    在前面文章中简单介绍了JNI,这一篇文章来简单看一下jni.h中定义的一些常用方法,来实现通过C++调用Android中的Java代码. 转载请说明出处:http://blog.csdn.net/da ...