一,定义有状态Bean和无状态Bean

有状态Bean:

@Stateful
@Remote
public class StatefulEjbBean implements StatefulEjb{ private int state; @Override
public void compute(int i) {
state=state+i;
} @Override
public int getResult() {
return state;
} }

无状态Bean:

@Stateless
@Remote
public class StatelessEjbBean implements StatelessEjb { private int state; @Override
public void compute(int i) {
state = state + i;
} @Override
public int getResult() {
return state;
}
}

二,client測试及结果

1。測试有状态EJB对象:

public class StatefulEjbClient {

	public static void main(String[] args) throws Exception {
InitialContext context=new InitialContext();
//第一次会话
StatefulEjb ejb1=(StatefulEjb)context.lookup("StatefulEjbBean/remote");
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
System.out.println("第一次会话结束---------"); //第二次会话
StatefulEjb ejb2=(StatefulEjb)context.lookup("StatefulEjbBean/remote");
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
System.out.println("第二次会话结束---------"); } }

结果:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAAD8CAIAAADsRU8RAAAKaUlEQVR4nO3dXZqkKBCFYdbFgmI9sZq4nYWwidkBcyEiIGRa1TXdROf3PnPRY6U/qSdDVNSQRynHkO02+CGTHOU7U5CQNXXTkXMSErNpjlr/lkPMx2c1luEmOZ7/fv0Vkl6j/xjLQaYzmy3Jr63ha473b3Ef+CPz2ku4Dbl9yaQ5hPJfHW5yDQw1bccqa6eQcgyT0esU6hCNi8hajppzyrFujGbDJC1ZMclRs8Zss6/Qfb9FZKdfczpwwnKQa50cX0Rjt4qOmU4HHqPXPw3rYTrr9if9auAvbM3pQLmvjcXCzxMyI/eELKYpIYfwLrLtBr7+3YTmyEqdoqanpWUeWbsiWFdcTUD3wzjneGykYzGSZrH3peVYF1fZzn2ZtC5J48Apy6FZkmush1W2GX34Rc0j2/6A3w783tZcbOLJ8k+/+4vR12oBerFC3ldZjd0PV44/zRbo+ol/a294jG6SRbLVgDZjJW3W5vmjrOuiLoYMZX6tDW5be2rxmw5cLP0V02u9P18V9m6UYW6zEMyT8d2t+bXI3r/7VyLb1eM6+myFmDyosvMv2RbzY8n6BsCQp8n3nC23WFbJybJYiew8NNZFqhbj65ejjxtwVmrYF0Kwms5vjKzMPjAd+M2tuR44WcLFd1+OPpg18+YrpHzyWw2DpC+35bcaBsdxmxyVUkqrdFjFV+OhOfxq27JlRvFpZLud432U6cCpVWRvh5Xzgc3oXbti1jCYrvzlFvnu1ny1iR9E9sXowzdqF0lmVbaukPOTbWRvlbKpxuufYOhW8eQrLQZOFr0/cLHpKNI3K62M1VbE1SFL+9fXR1p1UtOBs4kuI3tNoVl748CmqTPUpPt3efQbyD+wNScDp9N8W2X7hJSN2y98Oczq27KL5bxX2QeGSjBdiaO/8GzLz1mdI7sZfg8vBn5h5rOt+Z1N/G6aXxn/xTf69cg+23sO3wGdx5H9X2Y+25rf2MRvp/mV8X86ssMO4sUP6Ol5zQ/3RyM735qPN/EXpvncz0cW+GOILJwhsnCGyMKZPrJJYzjEL7eYgd+ijaxJCGc3AY3h3lMI+POayJrU2npUWzKLDV2RrYXVJISoKjQOsKMxsrVxYEQWW+obBqFrGtAwwIaGw68zsc2RGLAVTnLBGS4lwBkiC2eILJwhsnCGyMIZIgtniCycGSJbTsxyFQHbul/94lIttjZ5WgyRxc6ILJwhsnCGyMIZIgtnxtsVWwQXG+JSApwhsnCGyMIZIgtniCycIbJwhsjCGW4KhzPdS5Q0Ng8+JLTY0qJhwNNisKt5ZOlngG3NIkuJxcbGyCaN5BU76yJLXrG/JrLXGS46H2JfXEqAM0QWzhBZOENk4QyRhTNEFs4QWTjTRba5K5x+XNjUulsMocWW6MkFZ4bInk0DSix2RRdvOLM6Y8CLwrGpdZUlsdjS4smH5BW74lICnCGycIbIwhkiC2eILJwhsnCGyMKZSWSPm8O5XIs93SJrEqIIHbmwq3tPLl4Wjq2NdyVETXSXxc6ayJqE5onIRBZ7uiI7PpGLzjHY0vQkF1UW+yKycIZLCXCGyMIZIgtniCycIbJwhsjCGSILZ4Z32PI+GuxujCxBxeaILJxZNQzoEYNNrZ8vS8HFlhZnDHiMN3Y1j6wJTQNsatGWJa/YFZcS4AyRhTNEFs4QWThDZOEMkYUzRBbOEFk400c2aYyqEoKoxqj25LKtSe2M0Pxz/MxtMknVyixDEJHu+kXz+XaazVueWnSG+ChNZJPGqCmp2hGZpPLsGpiJmJllkygSQ4iq2o5pInYmtB1NNeWcUsrZzCZ/edHjfDI5fIi+yprGGMJRZEMIUSzlPIZn8syupGomYsksDcW2q4zn8KQxhBjVhrpZnruoVn4/+Yxvu4ztKOcS4nMs3hT+tX1uMlMRy3kozLc+49bu/5vS2lZZU9Xy0NBmac7JlJ/DWWXbQE9fDullIB7rIntU06iprlWRschNXLkxFbXbphFr6/TV8i05LZ+LddQ6wOwY7fpTCb1ILHsCNvrHmZwxaHse3nbLN3UPXmrsrNE6f4ezmWVTET0fansej9UJnHMfBpmKisrqWA9/t0nDQOzIismzlkHZV9ej/OG8wfm/ZdLjvCb1t1RZaVq6dcTS1igHiVTZD3RFtr155n1x7Yz33VxldWiNTs6C1Qpam6fNSbO+yja3SjRjcYvlh+FSApwhsnCGyMIZIgtniCycIbJw5taTi0uJ2Fsb2eZkP6c7sav+haDXpVfeb49N9Ve/ypXXEGLtTQXsZYxsbRws+rIAf1jfMAhd04CGATY0HH7VTodjtytgE5zkgjNcSoAzRBbOEFk4Q2ThDJGFM0QWzhBZODNEtpyY5SoCtnW/+sWlWmzt3jAgstgakYUzRBbOEFk4Q2ThzHi7YovgYkNcSoAzRBbOEFk4Q2ThDJGFM0QWzhBZOMNN4XCmjWzS2Dz4kNBiS4uGAU+Lwa7mkaWfAbY1iywlFhsbIzu+KBHYzP1N4eQVW2si27wAmc6H2BaXEuAMkYUzRBbOEFk4Q2ThDJGFM0QWznSRbe4Kpx8XNrXuFkNosSV6csGZIbJn04ASi13RxRvOrM4Y8KJwbGpdZUkstrR48iF5xa64lABniCycIbJwhsjCGSILZ4gsnCGycGYS2ePmcC7XYk+3yJqEKEJHLuzq3pOLl4Vja+NdCVET3WWxsyayJqF5IjKRxZ6uyI5P5KJzDLY0PclFlcW+iCyc4VICnCGycIbIwhkiC2eILJwhsnCGyMKZ4R22vI8GuxsjS1CxOSILZ1YNA3rEYFPr58tScLGlxRkDHuONXc0ja0LTAJtatGXJK3bFpQQ4Q2ThDJGFM0QWzhBZOENk4QyRhTNEFs70kU0ao6qEIKoxqj25bGtSOyM0/xw/c5tMUrUyyxBEpLt+0Xy+nWbzlqcWnSE+ShPZpDFqSqp2RCapXDlLt+cftQETM7NsEkViCFFV24SaiJ0JbZhqyjmllLOZTf7yosf5ZHL4EH2VNY0xhKPIhhCi2LPrtknVTMSSWRqKbVcZz+FJYwgxqg11szx3Ua38fvIZ33YZ21EeLyH+Gos3hX9tn5vMVMRy7grzpM+4tfv/prS2VdZUtTw0tFmaczLl53BW2TbQ05dDehmIx7rIHrviqKmuVZGxyE1cuTEVtdumEWt38lfLt+S0fC7WUesAs2O0608l9CKx7AnY6B9ncsag7Xl42y3f1D14qbGzRuv8Hc5mlk1F9Hyo7Xk8Vidwzn0YZCoqKqtjPfzdJg0DsSMrJrUmvjxUL/vqepQ/nDc4/7dMepzXpP6WuUnT0q0jlrZGOUikyn6gK7LtzTPvi2tnvO/mKqtDa3RyFqxW0No8bU6a9VW2uVWiGYtbLD8MlxLgDJGFM0QWzhBZOENk4QyRhTNEFs4QWThDZOEMkYUzRBbOEFk4Q2ThDJGFM0QWzhBZOENk4QyRhTMh5/wv4AeRhTNEFs4QWTjzKrL/nH7nAgGvLSNLXrGneWTJK7Y1iSx5xc6osnCGtiyc4YwBnOG8LJwhsnCGyMIZIgtniCyc+Q/gh3vNXkpQPgAAAABJRU5ErkJggg==" alt="" />

2,測试无状态EJB对象:

public class StatelessEjbClient {

	public static void main(String[] args) throws NamingException {
InitialContext context=new InitialContext();
//第一次会话
StatelessEjb ejb1=(StatelessEjb)context.lookup("StatelessEjbBean/remote");
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
ejb1.compute(1);
System.out.println(ejb1.getResult());
System.out.println("第一次会话结束---------"); //第二次会话
StatelessEjb ejb2=(StatelessEjb)context.lookup("StatelessEjbBean/remote");
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
ejb2.compute(1);
System.out.println(ejb2.getResult());
System.out.println("第二次会话结束---------"); //推断每次查找到的对象是否一样
System.out.println(ejb1==ejb2);//false } }

结果:

aaarticlea/png;base64,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" alt="" />

三,结果对照

通过多次运行,发现对于有状态的EJB对象。每次通过查找获得的对象都是新对象。而对于无状态的EJB对象,每次查找获得的对象都有一个单例类的效果。多次运行測试无状态的EJB对象的方法,会发现服务端的貌似始终在对一个对象进行操作。

有状态的EJB对象和无状态的EJB对象的更多相关文章

  1. Flutter - Stateful(有状态) 和 stateless(无状态) widgets

    Stateful(有状态) 和 stateless(无状态) widgets 有些widgets是有状态的, 有些是无状态的 如果用户与widget交互,widget会发生变化,那么它就是有状态的. ...

  2. http协议是无状态协议,它的无状态指的是什么,如何解决这种情况

    http是无状态的协议,也是不安全的协议, 它的无状态是指对于事务处理没有记忆能力,缺少状态意味着后续的操作需要前面的信息. 解决办法:1,通过cookie解决,2,通过session会话保存.

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

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

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

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

  5. 基于Volley,Gson封装支持JWT无状态安全验证和数据防篡改的GsonRequest网络请求类

    这段时间做新的Android项目的client和和REST API通讯框架架构设计.使用了非常多新技术,终于的方案也相当简洁优雅.client仅仅须要传Java对象,server端返回json字符串, ...

  6. Flask基础(10)-->http的无状态协议解决办法一(客户端cookie)

    http的无状态协议 http是一种无状态协议,浏览器请求服务器时无状态的 什么是无状态? 无状态:指的是一次用户请求时,浏览器.服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求. 无状态 ...

  7. RestFul的无状态规则详解

    无状态原则 Statelessness:无状态原则是RESTful架构设计中一个非常重要的原则,无状态是相对于有状态而言的.在理解什么是无状态的交互请求之前,首先我们需要了解什么是有状态,并对两者进行 ...

  8. 深入RESTful无状态原则

    目录 目录 前言 无状态原则 Web服务的状态 基于状态的Web服务 基于无状态的Web服务 总结两者的区别 前言 在上篇RESTful基础知识中整体的介绍了RESTful架构设计思想的框架,在往后的 ...

  9. 无状态Web应用集成——《跟我学Shiro》

    http://www.tuicool.com/articles/iu2qEf 在一些环境中,可能需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时带上 ...

随机推荐

  1. sql语句中的[]中括号(转)

    下面有关sql语句中[]的信息适用于Sql Server.Access等多种数据库. 1.sql语句中加[]是为了防止歧义,避免与系统保留关键字冲突,使计算机能识别.sql语句中有些字段可能是关键字, ...

  2. linux下不是很完美的提高android虚拟机的启动速度

    去年双十一换的新电脑,华硕vivo4000的,配置的不算很好,4k的屏幕:3840×2160, 940M的显卡, core i7的CPU, 8G的内存,硬盘是1T的机械硬盘,除了硬盘基本感觉还可以吧. ...

  3. linux 共享内存 信号量 同步

    这篇文章将讲述别一种进程间通信的机制——信号量.注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物.有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号.下面 ...

  4. C#图解教程学习笔记——类和继承

    一.屏蔽基类的成员所有类都派生自object类.虽然类只能直接继承一个基类,但继承的层次没有限制.虽然派生类不能删除它继承的任何成员,但可以用与基类同名的成员来屏蔽(mask)基类成员.1. 要屏蔽一 ...

  5. sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果

    select  [value] = stuff((select ','+modmb003  from modmb detail where modmb=18 for xml path('')), 1, ...

  6. java 仓库maven

    工具: apache-maven-3.2.3.zip maven_data.zip 在java Window->Preferences->Maven中 Installations中添加ap ...

  7. win7下用PyInstaller把Python代码打包成exe文件

    2013-11-05 22:02:14|   1.安装 使用PyInstaller需要安装PyWin32. 下载与Python对应的PyInstaller版本,解压后就算安装好了. 例如,安装了PyI ...

  8. linux文本处理常用命令

    linux文本处理常用命令   linux文本处理命令:grep.sed.printf.awk 1.grep grep的作用是按行查找字符,输出包含字符的行. #从文件查询 grep 'hello' ...

  9. gradients的一些注意点

    Each variable has a [.grad_fn] attribute that references a Function that has created the Variable(ex ...

  10. js对象浅拷贝和深拷贝详解

    js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具 ...