7.有状态会话.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.有状态会话

有状态会话Bean 当客户调用Bean方法时,客户将启动与企业会话Bean的会话.其状态必须保存下来,供同一个客户下次使用. 如果持有大量会话资源,服务器将不堪承受. 为了限制内存中会话Bean的数量,将其保存到磁盘,称为Passivation。 当再次调用时Activation。 最近最少使用策略。 只有客户请求到来时才激活有态Bean实例。 维护状态会话的规则 挂起实例时,容器借助于对象序列化将会话状态转换成二进制blob,写入到硬盘。因此,状态信息转移到持久化源中。 会话状态的组成部分: 非transient的原始类型;非transient的Java对象类型。 持有的对容器实现对象的引用。本地或远程业务接口的引用,Home对象的引用;JNDI命名上下文;SessionContext对象。 回调接口 @Prepassivate 此方法调用后,Bean将被交换到外存。 在J2EE中,通过预定义方法签名实现。 @Stateful public class MyBean{ @Prepassivate public void passivate(){ //释放Socket连接等 } } @PostActivate 恢复内存状态,恢复释放的连接 @Stateful public class MyBean{ @PostActivate public void activate(){ //打开Socket,数据库连接等 } } 除非要在EJB中打开资源,否则不必提供回调方法。 可以为Bean类提供单个或多个回调监听器类(拦截器)。 生命周期回调 CountBean示例 远程业务接口 public interface Count { public int count(); //加1 public void set(int val); //置位 public void remove(); //删除 } 客户请求将数量加1。客户多次调用。 实现类 @Stateful @Remote(Count.class) @Interceptors(CountCallbacks.class) public class CountBean implements Count { private int val; public int count() { System.out.println(count()); return ++val; } public void set(int val) { this.val = val; System.out.println(set()); } @Remove public void remove() { System.out.println(remove()); } } 拦截 在类级拦截 在方法级拦截 变量val是可序列化的,挂起、激活期间容器自动保存其值。 客户调用remove()方法后,此EJB实例不再需要,可销毁。 拦截器 public class CountCallbacks { public CountCallbacks() {} @PostConstruct public void construct(InvocationContext ctx) throws Exception { System.out.println(cb:construct() ); ctx.proceed(); } @PostActivate public void activate(InvocationContext ctx) throws Exception { System.out.println(cb:activate()); ctx.proceed(); } @PrePassivate public void passivate(InvocationContext ctx) throws Exception { System.out.println(cb:passivate()); ctx.proceed(); } @PreDestroy public void destroy(InvocationC

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档