社区
Java EE
帖子详情
web里面,什么是无状态bean什么是有状态bean
richard_2010
2010-10-29 02:10:16
不管是spring还是ejb都有这样一个概念,我刚开始以为无状态bean就是没有成员变量,后来发现不是那么回事。
ejb里面无状态的意思好像是说容器不为你保存变量的值,请问谁对这个比较了解的,说一说吧。
最好能有代码描述,尤其是无状态和有状态bean在什么场合使用。
...全文
1661
32
打赏
收藏
web里面,什么是无状态bean什么是有状态bean
不管是spring还是ejb都有这样一个概念,我刚开始以为无状态bean就是没有成员变量,后来发现不是那么回事。 ejb里面无状态的意思好像是说容器不为你保存变量的值,请问谁对这个比较了解的,说一说吧。 最好能有代码描述,尤其是无状态和有状态bean在什么场合使用。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bjw1989
2012-03-11
打赏
举报
回复
知识太薄了,不太懂。
跑跑跑2683
2012-02-11
打赏
举报
回复
来学习的。。
laifu901
2011-11-24
打赏
举报
回复
都太牛逼了
sunboyzsm
2011-10-10
打赏
举报
回复
复习。。。
养家糊口的程序媛
2011-07-30
打赏
举报
回复
好贴!学习学习。。。
zhu081607
2010-11-01
打赏
举报
回复
好贴,学习中!
xianaofei
2010-11-01
打赏
举报
回复
1
首先,无状态Bean(Stateless Beans)和有状态bean(Stateful Beans)都是Session Bean,都是服务器端提供的可以被调用的服务。而前者仅仅是提供服务的调用,而后者维护了一个会话状态,每一次的调用都使会话的状态发生改变,直到会话的结束(购物车就是这样的一个例子)。在调用stateless Beans时,每一次都要提供这次调用的所有的信息,但是速度相对较快,用于功能单一的服务调用。而调用stateful Bean时,可以每一次都提供部分信息,直到提交才完成整个会话,期间通过一个相应id号使得每一次调用与特定的stateful Bean关联。相对于stateless Beans来说,Stateful Beans速度较慢,还要使用一定的内存来维护状态,但是能够完成比较复杂的服务调用。
richard_2010
2010-11-01
打赏
举报
回复
大家可以看看我写的这篇博客
http://blog.csdn.net/richard_2010/archive/2010/11/01/5980051.aspx
结合了大家的回复写出了对Stateless和Stateful会话bean的认识。
richard_2010
2010-11-01
打赏
举报
回复
我基本已经搞定无状态有状态的含义了,谢谢诸位的探讨。
不过ls有的人是在别处直接复制别人的回复过来的,没意思。
richard_2010
2010-10-31
打赏
举报
回复
不对,session bean也要实现自己的商业逻辑,也就是业务逻辑
richard_2010
2010-10-31
打赏
举报
回复
[Quote=引用 18 楼 panhaichun 的回复:]
你把spring的prototype比作成了ejb中的stateful session bean 了。
ejb中的stateful指的是有状态会话bean, 注意 “会话” 2个字。
[/Quote]
session bean是代表客户应用和EJB容器之间的会话,spring里面的bean是实现业务逻辑
除了这方面的区别,按我理解,认为prototype bean和stateful seesion bean是差不多的,都是每次“请求”都会产生一个新的实例
richard_2010
2010-10-31
打赏
举报
回复
越来越迷糊了,可能快到达事物的本质了,黎明前的黑暗吧。
谁能继续解释下为什么要分有状态和无状态的bean?通过这个问题应该能更好的理解有状态和无状态的含义。
panhaichun
2010-10-30
打赏
举报
回复
有状态的bean也有可能是 为所有用户只创建一个对象。就是说有状态的bean也有可能是单利的.
比如说下面这样
public class UserServiceImpl implements UserService {
private int saveTimes;//记录调用了多少次saveuser方法, 这个属性是有状态的
private UserDao userDao;//userdao也是无状态的
public synchronized void saveUser(User user) {
saveTimes++;
}
}
richard_2010
2010-10-30
打赏
举报
回复
[Quote=引用 4 楼 panhaichun 的回复:]
一个bean没有成员变量,或者那个bean的成员变量也是无状态的bean,那么这个bean就是无状态的。顺便说明一下单利对象不一定是无状态的。
spring里面的singleton和ejb里面的stateless使用起来基本一样,但是他们在实现上还是有区别的。
prototype和stateful区别就较大了,ejb的stateful可以用来保存客户端的数据,比如说用来实现购物车;
……
[/Quote]
在POJO里面,成员变量无状态的怎么表示?
谁能贴点代码出来看看?
allen3010
2010-10-30
打赏
举报
回复
站位,学习哦
richard_2010
2010-10-30
打赏
举报
回复
上代码最好了,不光是ejb的,还有别的框架下的代码都可以
leecyz
2010-10-30
打赏
举报
回复
我只知道有状态bean(statefull)是为每个用户创建对象。
无状态bean(stateless)为所有用户创建一个对象。类似单例模式的感觉。
无状态的好处就是只建立一个对象,不耗资源,有状态的耗资源。大多数情况下还是用statefull.
我个人ejb用得不深,项目经验少,解释不到位。
panhaichun
2010-10-30
打赏
举报
回复
同样的道理pring的singleton也可以有状态啊,只是它的状态可以被大家共享而已
panhaichun
2010-10-30
打赏
举报
回复
[Quote=引用 14 楼 richard_2010 的回复:]
按你的意思是如果方法里面对成员变量进行修改了就是有状态的么?如果我有个方法
public void methodA(){
if(userDao != null){
userDao = new UserDaoImpl();
}
}
那这个时候userDao是有状态还是无状态?
按有状态bean的定义是web容器会保存bean的状态,那在spring里面,每次请求prototype bean都会创建一个新的实例,而请求结束后这个实例是会销毁的,这样无所谓保存不保存bean的状态了,因为也不可能能访问被保存的状态了,那是不是说prototype bean不可能是有状态的呢?期待有人解答。
[/Quote]
你把spring的prototype比作成了ejb中的stateful session bean 了。
ejb中的stateful指的是有状态会话bean, 注意 “会话” 2个字。
当然可以说spring的prototype是有状态的,它可以保存一次请求的状态啊,典型的如struts2的action,难道说不是有状态的吗?
richard_2010
2010-10-30
打赏
举报
回复
这个板块好像有点冷
加载更多回复(11)
J2EE面试题集锦(附答案)
J2EE面试题集锦(附答案)
spring 3.2.4官网jar包
这是我从官网上下载的最新jar包,分享给大家!
Java - 有
状态
bea
n和无
状态
bea
n
有
状态
Bea
n和无
状态
Bea
n的本质区别:声明周期 1. 前言:EJB EJB:称为企业Java
bea
ns,是基于分布式事务处理的企业级应用程序的组件。 Sun公司发布的文档中对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构 EJB种类: EJB容器可以接收三类EJB: 会话
Bea
n(Session
Bea
ns) 有
状态
会话
Bea
n 无
状态
会话
Bea
n 实体
Bea
n(Entity
Bea
n) 消息驱动
Bea
n(Message Dri.
无
状态
的
bea
n和有
状态
的
bea
n
最近重新温故一下Java
bea
n, 整理一下
bea
n
状态
的笔记,有不对的地方希望广大猿友指正啊。 1、在
web
开发中,
bea
n是否有
状态
对于
bea
n的生命周期有影响。多大影响还没仔细考虑。 2、有
状态
的
bea
n,具有数据存储功能。无
状态
的
bea
n,只有普通的对数据的操作方法,而没有存储功能。 有
状态
的
bea
n不应该被线程共享,无
状态
的
bea
n可以被线程共享。 有
状态
的
bea
n 3、
web
有
状态
bea
n和无
状态
bea
n是在说什么
一个类的内部
状态
创建后,在整个生命期间都不会发生变化时,就是不变类。这种使用不变类的做法叫做不变模式。 不变模式有两种形式:一种是弱不变模式,另一种是强不变模式。 弱不变模式: 一个类的实例的
状态
是不可变化的,但是这个类的引用的实例具有可能会变化的
状态
。这样的类符合弱不变模式的定义。要实现弱不变模式,一个类必须满足如下条件: 第一,对象没有任何方法会修改对象的
状态
,
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章