社区
Java EE
帖子详情
web里面,什么是无状态bean什么是有状态bean
richard_2010
2010-10-29 02:10:16
不管是spring还是ejb都有这样一个概念,我刚开始以为无状态bean就是没有成员变量,后来发现不是那么回事。
ejb里面无状态的意思好像是说容器不为你保存变量的值,请问谁对这个比较了解的,说一说吧。
最好能有代码描述,尤其是无状态和有状态bean在什么场合使用。
...全文
1807
32
打赏
收藏
web里面,什么是无状态bean什么是有状态bean
不管是spring还是ejb都有这样一个概念,我刚开始以为无状态bean就是没有成员变量,后来发现不是那么回事。 ejb里面无状态的意思好像是说容器不为你保存变量的值,请问谁对这个比较了解的,说一说吧。 最好能有代码描述,尤其是无状态和有状态bean在什么场合使用。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
【Java
Web
开发指南】有
状态
会话
Bea
n(SLSB) 和无
状态
会话
Bea
n(SFSB)的区别
有
状态
会话
Bea
n(SLSB) 和无
状态
会话
Bea
n(SFSB)的区别 1 无
状态
(Stateless) 在不同方法调用间不保留任何
状态
。 事务处理必须在一个方法中结束 。 通常资源占用较少;可以被共享(因为它是无
状态
的) 。 无
状态
Bea
n不会"专门"保存客户端的
状态
----(需要强调“专门”是因为无
状态
会话
Bea
n也会有成员变量,有成员变量就可以保存
状态
,但它不会专门为特定的客户端保存
状态
。)。 ----你对ENTITY
BEA
N的数据操作不会被容器维护,当其他的用户要用ENT
ejb3.0无
状态
Bea
n和有
状态
Bea
n区别
ejb3.0无
状态
Bea
n和有
状态
Bea
n区别 有
状态
的
bea
n主要用于不是
web
的程序 也就是安装的客户端
有
状态
会话和无
状态
会话区别(spring
bea
n解释)
引用:http://blog.csdn.net/xueyepiaoling/article/details/6107624 默认情况下,从
bea
n工厂所取得的实例为Singleton(
bea
n的singleton属性) Singleton: Spring容器只存在一个共享的
bea
n实例, 默认的配置。 Prototype: 每次对
bea
n的请求都会创建一个新的
bea
n实例。二者选择的原则:...
无
状态
的
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
java
bea
n
状态
,无
状态
和有
状态
的企业Java
Bea
n
I am going through the Java EE 6 tutorial and I am trying to understand the difference between stateless and stateful session
bea
ns. If stateless session
bea
ns do not retain their state in between met...
Java EE
67,535
社区成员
225,849
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章