浏览 1648 次
|
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-03-20 关键字: ejb
EJB容器怎样管理生命周期,从而增加了Scalability(可扩展性)?
JTA是什么? 用户为什么使用? ServletConfig/PageContext/ServletContext他们之间联系与区别? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-03-20
不算难,不过EJB没搞过,还真不知道,但是底下的那两个都知道.
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-31
问的问题不明不白,什么咚咚的生命周期? EntityBean? SessionBean?
建议你先去随便找一本EJB入门书看看,另外ServletContext之类的应该是servlet/jsp知识吧 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-23
1.Stateful session Bean (有状态会话Bean)
有状态会话Bean实例有三种状态,不存在,就绪,和钝化。 客户端调用home接口的create 方法,ejb容器实例化一个Bean并调用setSesssionContext,ejbCreate方法,使得Bean处于就绪状态。然后客户就可以使用其商业方法了。ejb容器对Bean的生命周期进行管理,一般会对最少使用的EJB进行钝化,当客户在使用这个EJB时,容器会进行激活,这个过程对客户来说是透明的。当用户调用remove方法,容器调用ejbRemove方法,ejb生命周期结束. 2.Stateless Session Bean(无状态会话Bean) 实例就两种状态,不存在和就绪. 客户端调用home接口的create方法,如果不存在可用的实例.ejb容器实例化一个Bean并调用setSesssionContext,ejbCreate方法.当客户调用remove方法之后,ejb容器则调用ejbRemove的方法,ejb生命周期结束. 3.Entity Bean(实体bean) 实体bean有三种状态,不存在,在pool中,就绪. ejb容器创建实例时调用setEntityContext,把容器的上下文传到bean组件中.实例化之后bean会移到池中,此时ejb没有和任何的实体对象进行关联,所有的bean实例是一样,容器会指派它和具体的实体标示关联,进入就绪状态。有两种方法使得一个实体bean从池化进入到就绪状态,一是客户端使用create方法,使得ejb容器调用ejbCreate和ejbPostCreate 方法,二是容器调用ejbActivate方法,这对客户来说是透明的,只有当实体bean处于就绪状态时,才能调用其商业方法。同样如果实体bean要从就绪进行池化也有两种方法,一是客户端调用remove方法,容器调用ejbRemove;二是容器ejbPassivate方法。bmp和cmp,在bean实例从池化到就绪时,对于bmp的实体bean,容器不会自动设置primary key.因此ejbCreate and ejbActivate 需要获得这个primary key ,如果这个key非法,ejbLoad and ejbStore methods 不能同步实体变量到数据库。ejbCreate 通过参数传入,ejbActivate 通过id = (String)context.getPrimaryKey();在pool状态,这些需要持久化的实体变量则不需要,在ejbPasssivate 中把它赋值null。unsetEntityContext, bean生命周期结束的时候,调用。 4.Message Driven Bean(消息驱动Bean) 消息bean就两种状态:不存在和就绪. 就像stateless session bean,容器在实例化bean的时候,调用setMessageDrivenContext,ebjCreate. 调用ejbRemove方法结束生命周期。当消息到达的时候Onmessage方法。因此可以mdb是一种jms客户端企业级组件。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-23
JTA主要用于分布式的多个数据源的两阶段提交的事务,而JDBC的Connection提供的单个数据源的事务; 后者因为只涉及到一个数据源,所以其事务可以由数据库自己单独实现, 而JTA事务因为其分布式和多数据源的特性, 不可能由任何"一个"数据源实现事务, 因此JTA中的事务是由"事务管理器"实现的,它会在多个数据源之间统筹事务,具体使用的技术就是所谓的"两阶段提交", 一般JTA事务都是用于EJB中(因为EJB本身也是分布式的), 所以一般的应用服务器都有自己的事务管理器用来管理JTA事务,注意这并不表示EJB容器有管理事务的功能; 事实上也有单独的事务管理器比如开源的Tyrex. 如果只用Tomcat做应用服务器的话是不能使用JTA事务的;
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-23
bjsundway 写道 EJB容器怎样管理生命周期,从而增加了Scalability(可扩展性)? 想要问的应该是SLSB的池化机制 |
|
| 返回顶楼 | |






