1 区别

有状态bean : 客户端通过JNDI访问有状态bean, 服务端new该bean,并返回该代理对象

有状态bean : 客户端通过JNDI访问有状态bean, 服务端该bean是单例模式,并返回该代理对象

2 通过代码看区别

服务端代码

StatefulEjbI.java

package com.lesson.entity;
/*** 有状态的ejb接口* */
public interface StatefulEjbI {public void changeState(int state);public int getState();
}

StatefulEjbImpl.java

package com.lesson.entity;import javax.ejb.Remote;
import javax.ejb.Stateful;/*** 有状态的ejb实现* */
@Stateful
@Remote
public class StatefulEjbImpl implements StatefulEjbI{private int state;public void changeState(int state) {this.state += state ;}public int getState() {return state;}}

StatelessEjbI.java

package com.lesson.entity;
/*** 无状态的ejb接口* */
public interface StatelessEjbI {public void changeState(int state);public int getState();
}

StatelessEjbImpl.java

package com.lesson.entity;import javax.ejb.Remote;
import javax.ejb.Stateless;/*** 无状态的ejb实现* */
@Stateless
@Remote
public class StatelessEjbImpl  implements StatelessEjbI{private int state;public void changeState(int state) {this.state += state ;}public int getState() {return state;}}

客户端代码

StatefulClient.java

package com.lesson;import javax.naming.InitialContext;
import javax.naming.NamingException;import com.lesson.entity.StatefulEjbI;
import com.lesson.entity.StatefulEjbImpl;/*** 有状态的客户端* */
public class StatefulClient {public static void main(String[] args) throws NamingException {InitialContext context = new InitialContext();System.out.println("有状态Stateful第一次会话");StatefulEjbI statefulEjbI = (StatefulEjbI)context.lookup("StatefulEjbImpl/remote");for(int i = 0 ; i < 10 ; i++){statefulEjbI.changeState(1);System.out.println("state1 = " + statefulEjbI.getState());}System.out.println("有状态Stateful第二次会话");StatefulEjbI statefulEjbI2 = (StatefulEjbI)context.lookup("StatefulEjbImpl/remote");for(int i = 0 ; i < 10 ; i++){statefulEjbI2.changeState(1);System.out.println("state2 = " + statefulEjbI2.getState());}}}

StatelessClient.java

package com.lesson;import javax.naming.InitialContext;
import javax.naming.NamingException;import com.lesson.entity.StatefulEjbI;
import com.lesson.entity.StatelessEjbI;
/*** 无状态的客户端* */
public class StatelessClient {public static void main(String[] args) throws NamingException {InitialContext context = new InitialContext();System.out.println("无状态Stateful第一次会话");StatelessEjbI statelessEjbI = (StatelessEjbI)context.lookup("StatelessEjbImpl/remote");for(int i = 0 ; i < 10 ; i++){statelessEjbI.changeState(1);System.out.println("state1 = " + statelessEjbI.getState());}System.out.println("无状态Stateful第二次会话");StatelessEjbI statelessEjbI2 = (StatelessEjbI)context.lookup("StatelessEjbImpl/remote");for(int i = 0 ; i < 10 ; i++){statelessEjbI2.changeState(1);System.out.println("state2 = " + statelessEjbI2.getState());}}}

3 输出结果

有状态客户端输出

无状态的客户端输出

从输出结果来看,有状态是每次new一个对象,无状态采用单例模式,每次都是同一个对象

4 代码下载 :  点击下载

(3) ebj学习:有状态bean和无状态bean区别相关推荐

  1. 有状态bean与无状态bean

    在学习bean的作用域的时候,了解了这个问题. bean5种作用域:分别是:singleton.prototype.request.session.gloabal session 接下来就讲一下有状态 ...

  2. spring的有状态BEAN和无状态BEAN

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

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

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

  4. EJB3.0框架实例----区分有状态bean和无状态bean

    1.通过这个例子可以区分,有状态bean和无状态bean中的数据会不会混淆; 2.一种取巧的做法是:在建立的客户端的工程上右键,选择build path--->把服 务端的EJB工程导入的,新建 ...

  5. Java - 有状态bean和无状态bean

    有状态Bean和无状态Bean的本质区别:声明周期 1. 前言:EJB EJB:称为企业Java beans,是基于分布式事务处理的企业级应用程序的组件. Sun公司发布的文档中对EJB的定义是:EJ ...

  6. spring 中属性scope 的prototype(有状态)和singleton(无状态)

    默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spring容器只存在一个共享的bean实例, 默认的配置. Prototype: ...

  7. 【转】多线程之有状态对象和无状态对象

    有状态对象和无状态对象 参考:https://www.cnblogs.com/xubiao/p/6567349.html 一. 基本概念 1. 什么是有状态对象 有状态对象指的是有数据存储功能的类的对 ...

  8. stateless java_有状态(Stateful)与无状态(Stateless)

    1.有状态(Stateful): 有数据存储功能.有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,类里面有成员变量,而且成员变量是可变的,是非线程安全的.在不同方法调用间 ...

  9. 「小程序JAVA实战」java-sesion的状态会话与无状态会话(38)

    转自:https://idig8.com/2018/09/02/xiaochengxujavashizhanjava-sesiondezhuangtaihuihuayuwuzhuangtaihuihu ...

最新文章

  1. ant 获取当前url的参数
  2. 在JavaScript中遭遇级联表达式陷阱
  3. FinanceJson
  4. 结构化程序goto语句_C ++ goto语句| 查找输出程序| 套装1
  5. 免費玩雲端運算,Amazon Web Service 雲端運算平台攻略 【1】
  6. AcWing 848. 有向图的拓扑序列(拓扑排序模板)
  7. Faiss从入门到实战精通
  8. Matlab 神经网络工具箱应用
  9. 计算机说课教案模板,初中信息技术说课稿通用模板大全
  10. 双均线matlab操作,使用talib实现双均线策略
  11. 2019/9/6工学结合周记
  12. 做个火影般的架构师,阿里内网疯狂传阅的“M8级”分布式架构笔记
  13. 《30天自制操作系统》---第一天
  14. 对接微信公众号出现【invalid ip xxx.xxx.xxx.xxx 】
  15. QT在QML下实现多国语言翻译
  16. 07【需求评审】 UED
  17. 活动、节假日、促销等营销方式的因果效应评估——方法模型篇(二)
  18. 中地数码:融合创新国产GIS 乘风而上助推实景三维中国建设
  19. (毕业设计资料)基于单片机的水位检测系统仿真设计
  20. 关于移动端token解决方案

热门文章

  1. 【转自CodeSheep】程序猿好书推荐
  2. 【PAT甲级】11077 Kuchiguse (20 分) Java
  3. PAT1042 字符统计 (20 分)
  4. 密码学系列之:memory-hard函数
  5. 安卓学习 之 bitmap用法
  6. orion算法被解密了
  7. 【三万字!】Dubbo、Zookeeper学习笔记!秒杀面试官!——双非上岸阿里巴巴系列
  8. 满分简便解法:1002 写出这个数 (20分)
  9. C语言满分代码:L1-056 猜数字 (20分)
  10. 数据结构题:根据所给权值设计相应的哈夫曼树,并设计哈夫曼编码