您的位置:首页 > 其它

EJB3.0开发有状态会话bean

2010-03-23 12:08 323 查看
EJB3.0开发有状态的会话bean,步骤与无状态会话bean类似,只需要在无状态会话bean中把@Stateless改成@Stateful
ejb类代码如下
package wang.ejb3.impl;
import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Local;
import javax.ejb.Stateful;
import wang.ejb3.HelloWorld;
import wang.ejb3.HelloWorldLocal;
@Stateful
@Remote(HelloWorld.class)
@Local(HelloWorldLocal.class)
public class HelloWorldBean implements HelloWorld, HelloWorldLocal {
public String sayHello(String name) {
return name + "说:你好,世界";
}
}
有状态会话bean开发完成。

虽然无状态会话bean与有状态会话bean开发过程很相似,但是它们采用对bean管理技术是不一样的。

无状态bean使用实例池技术管理bean


在实例池中的对象可以被多个用户共享,与数据源连接池技术是一样的,数据源里面的连接是可以被很多用户所共享的,当一个用户使用连接的时候,其他用户是不能使用该连接的,只有当这个用户使用完这个连接之后,这个连接回到了连接池里面,后面的用户才能使用这个连接,通过这个连接池技术可以减少数据连接对象的数量,提高系统的性能,无状态bean使用了实例池技术,当一个用户使用对象时候,其他用户是不能使用该对象的,只有这个用户使用完后,对象回到实例池中,其他用户才能使用该对象,所以会减少使用对象的数量来提高系统的性能,显然无状态bean的性能比有状态bean的性能更高。无状态bean是使用最少的对象数为用户服务。

有状态bean使用激活(activation)管理bean

[b]
有状态bean要为每个用户创建一个bean实例,并且需要在一段时间内缓存该bean,然而在一个大型企业应用中,用户是很多的,所以就有很多对象被缓存起来,增大内存的消耗,影响到系统的性能,然而在实际中,每个用户并不会频繁地访问这些对象,所以可以对这种情况进行优化,使用激活技术进行优化,当这个bean在一段时间内不再使用的时候,EJB容器会把有状态bean实例的会话信息序列化到本地磁盘,把这个bean所占用的内存资源释放掉,如果在这个总的缓存时间之内,用户又发起请求,EJB容器会把本地磁盘上的会话信息还原到内存中,为用户服务,如果在这个总的缓存时间之内没有用户访问,EJB容器会把本地磁盘上的会话信息给清除掉,这时,访问bean实例,就会得到超时异常信息。


[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: