public void setSessionContext( javax.ejb.SessionContext ctx )
{
_ctx = ctx;
}
protected javax.ejb.SessionContext getSessionContext()
{
return _ctx;
}
}
权衡Apache Geronimo EJB事务选项,第1部分: 容器管理事务(5)
时间:2011-03-13 IBM Jonathan Sagorin
同样的标识 @ejb.transaction 被用来指定该实体 bean 的事务属性。清单 4 显示如何指定实体 bean 的事务属性。同样,只需要注意粗体的标识即可。
清单 4. 实体 bean
package org.my.package.ejb;
/**
*
* @ejb.bean
* type="CMP"
* cmp-version="2.x"
* name="ClaimEntry"
* local-jndi-name="org.my.package.ejb/ClaimLocalHome"
* view-type="local"
* primkey-field="name"
*
*
* @xx-ejb.data-object
* container="true"
* setdata="true"
* generate="true"
*
* @ejb.value-object
*
* @ejb.transaction type="Required"
* @ejb.permission unchecked="true"
* @struts.form include-all="true"
*
* @web.ejb-local-ref
* name="ejb/ClaimLocal"
* type="Entity"
* home="org.my.package.ejb.ClaimLocalHome"
* local="org.my.package.ejb.ClaimLocal"
* link="PhoneBookEntry"
*
* @ejb.persistence table-name="Claim"
*
*/
public abstract class ClaimBean
implements javax.ejb.EntityBean
{
* ... EJB entity bean implementation here
}
在编译过程中执行 XDoclet 时,生成了 ejb-jar.xml。清单5 显示了文件的事务相关部分。注意粗体显示的 <transaction-type> 和 <trans-attribute> 元素。
清单 5. 生成的 ejb-jar.xml 片断
...
<ejb-jar >
<description><![CDATA[No Description.]]></description>
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<!-- Session Beans -->
<session >
<description><![CDATA[Sample session
bean.]]></description>
<ejb-name>SampleSession</ejb-name>
<home>org.my.package.ejb.SampleSessionHome</home>
<remote>org.my.package.ejb.SampleSession</remote>
<local-home>org.my.package.ejb.SampleSessionLocalHome
</local-home>
<local>org.my.package.ejb.SampleSessionLocal</local>
<ejb-class>org.my.package.ejb.SampleSessionSessionSession
</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
...
<!-- Entity Beans -->
<entity >
<description><![CDATA[]]></description>
<ejb-name>Claim</ejb-name>
<local-home>
org.my.package.ejb.ClaimLocalHome</local-home>
<local>org.my.package.ejb.ClaimLocal</local>
<ejb-class>org.my.package.ejb.ClaimCMP</ejb-class>
<persistence-type>Container</persistence-type>
<p
|