选择显示字体大小

enterprise javabeans导论三

会话bean
会话bean是一种通过home interface创建并对客户端连接专有的enterprise bean.会话bean实例一般不与其它客户端共享。这允许会话bean维护客户端的状态。会话bean的一个例子是购货车,众多顾客可以同时购货,想他们自己的购货车中加东西,而不是向一个公共的购货车中加私人的货物。定义一个会话bean
可以通过定义一个实现javax.ejb.sessionbean接口的类来创建一个会话bean.该接口定义如下:


public interface javax.ejb.sessionbean extends javax.ejb.enterprisebean {
public void ejbactivate() throws remoteexception;
public void ejbpassivate() throws remoteexception;
public void ejbremove() throws remoteexception;
public void setsessioncontext(sessioncontext context)
throws remoteexception;
}


javax.ejb.enterprisebean是一个空接口,是会话bean和实体bean的超类。


会话bean的交换


容器开发商可以实现把会话bean的实例从主存移到二级存储中的交换机制,这可以增加一段时间内实例化的会话bean的总数。容器维护一个bean的时间期限,当某个bean的不活动状态时间达到这个阙值,容器就把这个bean拷贝到二级存储中并从主存中删除。
容器可以使用任何机制来实现bean的持久性存储。最常用的方式是通过bean的串行化。bean开发者在bean中应避免使用transient fields。ejbactivate()和ejbpassivate()用来维护这个fields值。


活化和钝化


为了支持厂商提供会话bean的交换,规范定义了钝化--把bean从主存转移到二级存储的过程,活化--把bean恢复到主存中去的过程。在sessionbean接口中声明的ejbactivate()和ejbpassivate()方法,允许容器通知已经被活化的bean它将要被钝化。bean开发者可以用这些方法释放和恢复处于钝化状态的bean所占有的值、引用和系统资源。一个可能的例子是数据库连接,作为有限的系统资源,不能被钝化的bean使用。
有了这些方法就使得不必在使用transient.事实上,使用transient可能是不安全的,因为串行化机制自动地把值设为null或0。而通过ejbactivate()和ejbpassivate()方法显式地设置这些fields更好一些。依靠java的串性化机制把transient fields设成null也是不可移植的,因为当bean部署在不使用java的串性化机制获得持久性的ejb容器中时该行为会发生改变。如果容器不提供交换,那么这些方法将永远不会被调用。
当客户端调用bean的商业方法时钝化的bean被激活。当ejbobject收到方法调用的请求时,它通知容器需要活化的bean.当活化完成时,ejbobject代理对bean的方法调用。
如果bean 参与一个事务,那么它不能被钝化。把bean放在主存中更有效率,因为事务通常在很短的时间内完成。如果bean没有钝化前必须释放或活化前必须重置的状态,那么这些方法可置空。在大多数情况下,bean开发者不必在这些方法中做任何事。


会话bean的状态管理


会话bean的部署描述符必须声明该bean是有状态或无状态的。一个无状态bean是在方法调用间不维护任何状态信息的bean。通常,会话bean的优点是代替客户端维护状态。


然而,让会话bean无状态也有一个好处。无状态bean不能被钝化。因为它不维护状态,所以没有需要保存的信息。容器可以删除bean的实例。客户端永远不会知道无状态bean的删除过程。客户端的引用是ejbobject.如果客户端稍后又调用了一个商业方法,则ejbobject通知容器在实例化一个新的会话bean.因为没有状态,因此也没有信息需要恢复。


无状态bean可以在客户端间共享,只是在某一时刻只能有一个客户端执行一个方法。因为在方法调用间没有需要维护的状态,所以客户端可使用任何无状态bean的实例。这使得容器可以维护一个较小的可服用bean的缓冲池,节省主存。因为无状态bean在方法调用间不能维护状态,因此从技术上讲在home interface的create()方法不应有参数。在创建时向bean传递参数意味着在ejbcreate()返回时需要维护bean的状态。而且,经由ejbobject调用商业方法的结果使得容器必须能重创建一个无状态的bean.这时在开始创建bean时的参数就不存在了。厂商的安装工具应该能检查home interface的无状态对话bean以保证其不包含带参数的create()方法。
出处 www.apusic.com    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons