session bean 的生命周期是由ejb container 管理的。
stateful session bean 生命周期的也就是session 周期,是由client端的调用控制。
ejb container 要为每一个第一次call stateful session bean 的client 端,创建一个ejb object的实例,并且把该实例的引用传递给client端,那web的开发上,通常就是由HttpServletSession对象管理。道理很清楚:HttpServletSession 管理client端的生命周期,当client端访问结束时,那HttpServletSession对象也会销毁,接着ejb container也会把stateful session bean 的EJB OBJECT的实例销毁,释放资源。还有就是stateful session bean管理着client的状态,如购物车的状态等...
保存client状态这一点stateless session bean是无法实现的。因为client和stateless session bean
的EJB OBJECT的instance 不是一一对应关系。一个stateless session bean可以为多个client端服务。
而stateless session bean的调用对于系统资源的利用比较高效:不需要为每一个call stateless session bean的client端都newInstance,ejb container 是用bean instance pool来管理的。
---------------------------------------
希望我说的你可以了解。
我是从《EJB 3RD》看到的。
stateful session bean 生命周期的也就是session 周期,是由client端的调用控制。
ejb container 要为每一个第一次call stateful session bean 的client 端,创建一个ejb object的实例,并且把该实例的引用传递给client端,那web的开发上,通常就是由HttpServletSession对象管理。道理很清楚:HttpServletSession 管理client端的生命周期,当client端访问结束时,那HttpServletSession对象也会销毁,接着ejb container也会把stateful session bean 的EJB OBJECT的实例销毁,释放资源。还有就是stateful session bean管理着client的状态,如购物车的状态等...
保存client状态这一点stateless session bean是无法实现的。因为client和stateless session bean
的EJB OBJECT的instance 不是一一对应关系。一个stateless session bean可以为多个client端服务。
而stateless session bean的调用对于系统资源的利用比较高效:不需要为每一个call stateless session bean的client端都newInstance,ejb container 是用bean instance pool来管理的。
---------------------------------------
希望我说的你可以了解。
我是从《EJB 3RD》看到的。