网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.关注性能:宏性能基准测试.
.基础应用:java web三层架构配置入.
.用Java的New IO开发网络协议.
.温州IT主管联盟的未来走向.
.利用Observer模式实现组件间通信.
.Java入门:java中几个关于类的名.
.JAVA的安全结构.
.Spring Web Flow .
.Java与.NET集成将打破SOA应用壁垒.
.JavaWebStart1.0.1_01的安装向导.
.2005 JDJ Readers Choice Awards.
.抽象类和方法.
.使用JavaMail发送邮件.
.基于J2EE的电子商务网站实例.
.编写高级应用程序1.
.Java的一些编码基础.
.Eclipse开发struts完全指南一(全.
.使用Hibernate的项目中对VO的理解.
.Java开源测试工具JUnit简介.
.向断开的.NET应用配置数据的方法.

Enterprise JavaBeans导论3

发表日期:2008-1-5



  会话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()方法。
上一篇:Enterprise JavaBeans导论2 人气:408
下一篇:EJB设计模式5 人气:454
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐