无状态会话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. 超好用的谷歌浏览器、Sublime Text、Phpstorm、油猴插件合集

    原文:超好用的谷歌浏览器.Sublime Text.Phpstorm.油猴插件合集 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.c ...

  2. 【Henu ACM Round#16 B】 Bear and Colors

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] O(n^2)枚举每一个区间. 然后维护这个区间里面的"统治数字"是什么. 对于每个区间cnt[统治数字]++; ...

  3. 【2017 Multi-University Training Contest - Team 1 1002】Balala Power!

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6034 [Description] 给你n个字符串; 每个字符串都仅由小写字母组成; 然后,你可以把 ...

  4. CSUOJ 1651 Weirdo

    1651: Weirdo Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 40  Solved: 21[Submit][Status][Web Board ...

  5. 整合struts2+spring+hibernate

     一.准备struts2+spring+hibernate所须要的jar包:        新建web项目并将jar包引入到project项目中. 二.搭建struts2环境        a.在 ...

  6. [ Java ] [ Eclipse ] 加速 Eclipse 載入速度-轉載

    加速 Eclipse 載入速度-轉載 https://read01.com/NJjNOB.html

  7. Logistic Regression and Newton's Method

    Data For this exercise, suppose that a high school has a dataset representing 40 students who were a ...

  8. java 第三方库

    转载自http://www.cnblogs.com/lucus-jia/p/3483511.html java 第三方库   总结一下常用的java第三方库,方便查询和使用,欢迎补充. 1.核心库 A ...

  9. C语言-常量指针与指针常量

    最近倪健问我一个问题,他说:什么是常指针?什么是指向常变量的指针?请举例说明 我查阅资料后这么回答他了, 指针常量(常指针):int * const p : 指针是一个常量,也就是说它始终指向那个地址 ...

  10. 用Vue+axios写一个实时搜索

    刚刚在学vue,试着写了一个实时搜索文件. 思路:1.input 通过v-model绑定.2.通过watch检测输入结果变化.3根据结果变化从api调用不同的数据. 代码如下: <!DOCTYP ...