EJB中的三种bean介绍
1、会话bean(Session bean)
负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作。会话bean 分为两种:无状态会话bean,有状态会话bean
2、实体bean(entity bean)
实体bean用来表示持久存储库里的一个东西。实体bean只是数据模型,它不包括商务逻辑。实体bean可以将关系/对象数据库的数据映射到内存中供其它组件使用。实体bean是一直存在的,而且具有很高的容错性能。实体bean能供允许多用户同时访问。
3、消息驱动bean (message-driven bean)
它是专门用于异步处理java消息的组件,具有处理大量并发消息的能力只有在需要一个JMS客户的时候才会实用消息驱动bean。换句话说,消息驱动bean可以监听来自JMS消息服务的消息。客户绝对不会直接调用消息驱动bean;要想让消息驱动做点什么事情,客户必须向一个消息服务发出一条消息。
会话bean
l 无状态会话bean
平常,我们使用最多的是无状态bean,因为它的bean实例可供多个用户使用,所以它的性能比有状态bean高.正因为一个bean实例被多个用户使用.那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的.
l 有状态的bean
有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一个用户使用, 用户为它设置的值是不会被其他用户修改,所以可以正确保存用户设置的值,因此是有状态的.
Bean实例的两种管理技术
1.无状态bean使用实例池来管理,类似于数据库的连接池,原理上是相同的,
一个用户取得了实例池中的一个实例后,这个实例是不能被其他用户使用。
2. 有状态bean,采用钝化和激活来管理,每个用户每次调用的都是他专属的bean,和Session的原理相似,用户取得bean后,bean会缓存一段时间 (如果默认时间10分钟内不使用就保存到硬盘(钝化),并释放内存,30分钟内不使用就彻底删除,在10分钟和30分钟之间调用bean,就激活(在内存中新建bean对象,然后把硬盘中对象的值还原到新建bean对象中)),用户以后每次调用都是同一个bean.时间可以在jboss中设置。(购物车)