无状态会话bean(1)---定义

2023-05-16

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

上面的阐述听起来像是无状态的bean的一个局限,好像每次再见就像永别似的。但是这是迄今为止业务服务最常见的形式,就像去饭店吃饭,点菜的服务员与给你上菜的服务员是不是同一个这不是我们所关心的。无状态回话bean不同于适合在对话中积累状态(如零售应用程序的购物车)的有状态会话bean,无状态回话bean旨在非常有效的执行独立操作。无状态会话bean这样设计的目的也是考虑到服务器忍受不了大量客户端的时候对资源的占用。

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

l  零个或多个业务接口,定义了一个客户端在bean上可以调用的方法。当没有定义接口时,bean的实现类的公共方法集合形成了一个逻辑客户端接口。

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

大多数会话bean有一个业务接口,但是对会话bean可以向其客户端公开的接口数量是没有限制。当服务器遇到@Stateless注解时,它会知道把该bean当做一个会话bean。它将在EJB容器中配置这个bean,使得应用程序的其他组件可以使用它。

下面的这个EJB版本的Hello World例子中包含了一个业务接口。在此示例中包含了一个单一的方法。没有注解或者父接口来指明这是一个业务接口,和一般的类实现接口看起来是一模一样的。当会话bean实现它时,将会自动把它视为一个本地业务接口,意味着只有在同一个应用程序服务器上的客户端能够访问它。为了强调一个接口是本地业务接口,可以选择把@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()方法。客户端把HelloServiceBean类当做接口一样使用,不必考虑任何非公开的方法或实现的详细信息。可以想象服务器内部向客户端提供了一个代理接口,这个代理覆盖业务方法以提供标准的容器服务,客户端将与这个代理进行交互。

无接口视图的优点之一是简单。它不需要实现一个冗余的业务接口,并进一步使得EJB看起来像是常规JavaBean类。然而,由于无接口视图仅适用于本地回话bean,本例中采用传统样式的独立接口,从而保证无状态和有状态会话bean一致。

对于无状态会话bean类的定义只需要注意两点。第一是它需要一个无参数的构造函数,但是当没有其他的构造函数时,编译器通常会自动生成此构造函数。第二是不应该使用静态字段,这主要是因为bean的重新部署问题。

许多EJB容器创建一个无状态会话bean的实例池,然后选择任意的一个实例以服务每个客户端请求。因为这不能保证调用之间将使用相同的状态,所以不能认为点菜的服务员与给你上菜的服务员一定是同一个人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • LINUX 下进行UDP收发的C代码

    include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt string h gt include lt sys socket
  • VINS-Mono详解(一)

    文章目录 VINS Mono前端概述入口函数main 回调函数img callback 发布频率控制特征点提取与光流跟踪单目处理逻辑双目处理逻辑 FeatureTracker readImage 函数更新特征点id VINS Mono前端概
  • 在windows下使用putty连接虚拟中的linux出现主机拒绝的问题(已解决)

    一 首先windows的ip地址段必须和linux的ip地址段相同 xff0c 具体方法百度 xff0c Google下 二 linux的ssh服务必须安装 xff0c 打开 xff0c 具体指令如下 安装指令应该是 代码 sudo apt
  • 程序员读书的五重天

    第八天 xff0c 上帝说要有书 xff0c 于是人类文明摆脱了靠遗传来传承的窘境 所以对于读书好处 xff0c 基本上从古至今都是被人所认同的 其中最为精妙的莫过于宋真宗所言 xff1a 富家不用买良田 xff0c 书中自有千钟粟 xff
  • HTML5初体验——蛮神奇的

    记得去年在一个公司实习的时候 xff0c 听当时的领导说起过HTML5 xff0c 当时就大体了解了一下 知道了是新的下一代HTML的新标准 xff0c 去掉了HTML4中的一些标签 xff0c 扩展了一些标签内容 其他的就没有继续深入的去
  • Aruco码估计相机位姿初步

    Abstract xff1a 利用aruco库中的相关函数实现在摄像头下aruco码的识别和在指定地方插入视频 Criticize xff1a 一 xff1a OpenCV实现USB摄像头的打开 并且实现USB摄像头参数调节 我们调用ope
  • 【笔记】Protues仿真STM32的实现过程

    测试环境 xff1a protues8 6 问题 xff1a 搭建好基本电路 xff0c 在仿真时候出错 xff0c 提示没VSS和VDD未连接 xff0c 如下如图 提示错误 解决办法 xff1a 选择 Design gt Configu
  • 年度回忆录(2013.01----2013.12)

    看了一下上次的年度总结是从 2013 年 2 月份开始的 xff0c 按照以往的习惯 xff0c 年度回忆录是半年一写的 xff0c 这次居然破例了 xff01 由于工作的原因吧 xff08 这是找借口的节奏么 xff09 xff0c 没有
  • 使用JMF实现音乐播放(java多媒体编程)

    JMF实际上是Java的一个类包 JMF 2 1 1技术提供了先进的媒体处理能力 xff0c 从而扩展了 Java平台 的功能 这些功能包括 xff1a 媒体捕获 压缩 流转 回放 xff0c 以及对各种主要媒体形式和编码的支 持 xff0
  • Pygame下载和安装

    Pygame 的下载非常简单 xff0c 可分为两种方式 xff1a 一是通过 Python 的包管理器 pip 来安装 xff1b 二是下载二进制安装包进行安装 其中使用 pip 包管理器安装是最简单 最轻量级的方法 xff0c 下面以
  • 物联网毕业设计 stm32四轴飞行器设计与实现

    1 简介 Hi xff0c 大家好 xff0c 今天向大家介绍一个学长做的单片机项目 基于stm32的四轴飞行器设计 大家可用于 课程设计 或 毕业设计 这次尝试制作一个四旋翼飞控的过程 这个飞控是基于STM32 xff0c 整合了MPU6
  • 机器学习(周志华)学习笔记八:集成学习(上)

    一 AdaBoost思想 三个臭皮匠 xff0c 顶个诸葛亮 xff0c 这也正是集成学习的目的 为了达到上述目的 xff0c AdaBoost算法有两个核心思想 1 更加关注之前基学习器做错的样本 xff1b 2 降低错误率较高的基学习器
  • opencv在编译报错的汇总

    Q1 xuy 64 xuy 桌面 opencv test make usr bin cmake home xuy anaconda2 lib libcurl so 4 no version information available req
  • 至简设计系列_闹钟

    作者 xff1a 小黑同学 本文为明德扬原创及录用文章 xff0c 转载请注明出处 xff01 1 1 1 概述 数字时钟是采用数字电路技术实现时 分 秒计时显示的装置 xff0c 可以用数字同时显示时 xff0c 分 xff0c 秒的精确
  • 遥控器对码与飞控解锁

    今天开始DIY 四旋翼 xff0c 购买了 mwc 飞控和天地飞六代遥控器 xff0c 装好电机电调后 xff0c 想试一下遥控控制电机 首先是遥控发射器与接收器的对码 将电调连上电机后 xff0c 单独把电调的杜邦线插口查到接收器油门插槽
  • Git保存论文

    多图预警 多图预警 多图预警 多图预警 操作步骤 下载git for windows客户端安装TortoiseGit使用Git删除文件夹再试一遍 下载git for windows客户端 下载地址 http msysgit github i
  • Git小乌龟分支操作

    分支的创建 选择创建分支 这里填上分支名字 切换到新分支可点可不点 选中的话直接就切换到新分支 不点的话进行下一步选择切换 检出 选择要切换的分支 分支就创建完成 接下来是分支的合并 分支的合并 首先 确认当前的分支为发起合并方 个人理解
  • 零星PCB打板|开源广场|每月2张|等你来撸|保姆级教程:嘉立创免费PCB打样获取攻略

    目录 缘由 软件 xff1a 嘉立创EDA专业版 xff08 视情况下载 xff0c 非必需 xff09 软件 xff1a 嘉立创PC端下单助手 xff08 领优惠券 xff09 优惠券在这里 xff1a 嘉立创PCB免费打样新规则解读 6
  • Linux下利用GDB调试快速找到Bug

    调试程序最让人头疼的就是层出不断的Bug xff0c 而且有些Bug不容易定位 xff0c 下面介绍一种很强大的调试工具 xff1a GDB 虽然之前听过GDB调试 xff0c 但是自己调试时一直没使用过 今天在调试highmac程序时 x
  • 无状态会话bean(1)---定义

    无状态会话bean 用于完成在单个方法的生命周期内的操作 无状态bean 可以实现许多业务操作 xff0c 但是每个方法都不能假定任何其他的方法会在它之前调用 后半句的意思是现在的你可能不是刚才的你 xff0c 明天的你可也能不是今天的你