【Java】有状态会话bean和无状态会话bean
2017-06-11 09:13
232 查看
上篇博客中介绍了EJB第一个简单实例的实现。接下来小编计划为大家介绍SessionBean的两种状态:
1)无状态会话bean(Stateless)
·基本原理:
服务端会维持一个实例池,创建好若干个实例对象共客户端调用。当从客户端发送创建会话bean的请求是,并不一定会真的创建EJB,大多数情况下是从实力吃中得到一个实例,用完之后从新放回实例池。如果下次再访问,再从实例池中取出一个实例使用,并不一定是上次的实例。即使两次访问使用的是同一个实例,在两次访问之间也有可能在其他的客户端访问了该实例。所以,并不能保证在多次访问之间的信息会被保存。所以,无状态会话bean不会专门保存客户端的信息。
·优缺点:
当客户端发送对无状态的会话bean的请求时,可以随便取一个空闲的实例为客户端服务,效率比较高。
·使用@Stateless注解标识。
2)有状态会话bean(Stateful)
·基本原理:
只有客户端发送对有状态会话bean的访问,服务器都会创建一个会话bean实例与该客户端对应,这样这个实例与这个客户端就是一一对应的。如果客户端在bean实例中保存了信息,之后还可以使用。
·优缺点:
有状态的会话bean会保存客户端信息,一个客户端对应一个实例,这样随着客户端的增加,服务器需要创建的实例的数量也在增加,这样会对服务端造成一定的负担,当在服务端进行优化时,可以考虑使用共享实例的方式,保存实例状态,把暂时不用的实例可以挂起。如果再次请求时,进行激活操作。同时,这样的话,效率就比较低了。
有状态的会话bean好的地方是:可以保存客户端信息,在客户端后续访问的时候就可以少传递一些参数。
·使用@Stateful注解标识。
·小结:
根据上面分析,如果需要频繁的访问,并且多次访问之间会共享一些信息,这时候应该使用有状态的会话bean,对于不经常使用的功能,可以使用无状态会话bean。
1)无状态会话bean(Stateless)
·基本原理:
服务端会维持一个实例池,创建好若干个实例对象共客户端调用。当从客户端发送创建会话bean的请求是,并不一定会真的创建EJB,大多数情况下是从实力吃中得到一个实例,用完之后从新放回实例池。如果下次再访问,再从实例池中取出一个实例使用,并不一定是上次的实例。即使两次访问使用的是同一个实例,在两次访问之间也有可能在其他的客户端访问了该实例。所以,并不能保证在多次访问之间的信息会被保存。所以,无状态会话bean不会专门保存客户端的信息。
·优缺点:
当客户端发送对无状态的会话bean的请求时,可以随便取一个空闲的实例为客户端服务,效率比较高。
·使用@Stateless注解标识。
2)有状态会话bean(Stateful)
·基本原理:
只有客户端发送对有状态会话bean的访问,服务器都会创建一个会话bean实例与该客户端对应,这样这个实例与这个客户端就是一一对应的。如果客户端在bean实例中保存了信息,之后还可以使用。
·优缺点:
有状态的会话bean会保存客户端信息,一个客户端对应一个实例,这样随着客户端的增加,服务器需要创建的实例的数量也在增加,这样会对服务端造成一定的负担,当在服务端进行优化时,可以考虑使用共享实例的方式,保存实例状态,把暂时不用的实例可以挂起。如果再次请求时,进行激活操作。同时,这样的话,效率就比较低了。
有状态的会话bean好的地方是:可以保存客户端信息,在客户端后续访问的时候就可以少传递一些参数。
·使用@Stateful注解标识。
·小结:
根据上面分析,如果需要频繁的访问,并且多次访问之间会共享一些信息,这时候应该使用有状态的会话bean,对于不经常使用的功能,可以使用无状态会话bean。
相关文章推荐
- EJB——无状态会话Bean的home接口_hotelhome.java
- EJB——无状态会话Bean的Remote远程接口_hotel.java
- EJB——无状态会话Bean的Enterprise JavaBean类_hotelBean.java
- 建立你的第一个无状态会话Bean--HelloWorld之一
- EJB3.0开发无状态会话Bean问题
- [原创]EJB循序渐进,手把手创建简单的无状态会话BEAN
- 无状态会话Bean的例子
- EJB3.0开发指南:无状态会话Bean
- Eclipse3.2.1+jboss4.0.5开发J2EE中的EJB (有状态会话Bean 附图)二
- JBoss下的EJB3开发无状态会话Bean
- 有状态会话BEAN例子
- Eclipse3.1.1+jboss4.0.5开发J2EE中的EJB(无状态会话Bean)
- 精通EJB(4) 状态会话Bean基础
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)
- Eclipse3.2.1+jboss4.0.5开发J2EE中的EJB(无状态会话Bean 附图)
- EJB3.0开发有状态会话Bean问题
- EJB3.0开发指南:有状态会话Bean
- EJB3.0开发指南:有状态会话Bean
- 状态会话Bean和无状态会话Bean的区别
- 关于有状态和无状态会话bean的解释