Stateful Session Bean 示例和注意点

(1) ejb-jar.xml

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC 
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

<ejb-jar>
  <enterprise-beans>
    <session>
      <ejb-name>statefulSession</ejb-name>
      <home>examples.ejb20.basic.statefulSession.TraderHome</home>
      <remote>examples.ejb20.basic.statefulSession.Trader</remote>
      <ejb-class>examples.ejb20.basic.statefulSession.TraderBean</ejb-class>
      <session-type>Stateful</session-type>
      <transaction-type>Container</transaction-type>
      <env-entry>
        <env-entry-name>BEAS</env-entry-name>
	<env-entry-type>java.lang.Double </env-entry-type>
	<env-entry-value>100.0</env-entry-value>
      </env-entry>
      <env-entry>
        <env-entry-name>MSFT</env-entry-name>
	<env-entry-type>java.lang.Double </env-entry-type>
	<env-entry-value>150.0</env-entry-value>
      </env-entry>
    </session>
  </enterprise-beans>
  <assembly-descriptor>
    <container-transaction>
      <method>
        <ejb-name>statefulSession</ejb-name>
	<method-name>*</method-name>
      </method>
      <trans-attribute>Required</trans-attribute>
    </container-transaction>
  </assembly-descriptor>
  <ejb-client-jar>ejb20_basic_statefulSession_client.jar</ejb-client-jar>
</ejb-jar>

 

 

(2) weblogic-ejb-jar.xml

<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC 
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>

<weblogic-ejb-jar>
  <weblogic-enterprise-bean>
    <ejb-name>statefulSession</ejb-name>
    <stateful-session-descriptor>
      <allow-remove-during-transaction>true</allow-remove-during-transaction>
    </stateful-session-descriptor>
    <enable-call-by-reference>True</enable-call-by-reference>
    <jndi-name>ejb20-statefulSession-TraderHome</jndi-name>
  </weblogic-enterprise-bean>
</weblogic-ejb-jar>

 

 

 没有缓冲池,需要消耗大量内存来存储。每个ejb都是唯一的。

钝化和激活(passivation, activation)

闲置超时,bean被销毁

 

释放remote对象的引用,使得remote对象被垃圾回收。

 

缓冲管理

<max-beans-in-cache>标签: 设置缓冲池多大

<idle-timeout-seconds>: 当缓冲池满了将发生什么事

<cache-type> NRU(使用数量), LRU(最近最不常用)

没有超时的,当前没有方法调用的,没有事务参与的,>=85%  钝化,销毁

>=99%  钝化,销毁

如果没有办法了,就抛出CacheFullException.

 

钝化Bean的时候会钝化相应的所有可到达对象,递归嵌套。

 

不能钝化

(1) null

(2) transient

(3) 对SessionContext的引用

(4) 对UserTransaction的引用

(5) 对 "java:comp/env" 上下文的引用

(6) 对其它EJB的Home或者Remote接口的引用

 

必须在ejbPassivate和ejbActivate方法中关闭和重新打开这些资源。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值