可以在ejb-jar.xml
(EJB 1.1 中的)部署描述符中使用不同的名称但后面的相同类声明多个bean吗?
例如:
<session>
<ejb-name>AccountFacade</ejb-name>
<home>com.something.ejb.AccountFacadeHome</home>
<remote>com.something.ejb.AccountFacadeRemote</remote>
<ejb-class>com.something.ejb.AccountFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
<session>
<ejb-name>RestrictiveAccountFacade</ejb-name>
<home>com.something.ejb.AccountFacadeHome</home>
<remote>com.something.ejb.AccountFacadeRemote</remote>
<ejb-class>com.something.ejb.AccountFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
对于RestrictiveAccountFacade
我想在orion-ejb-jar.xml
文件中设置更高的隔离级别,例如:
<entity-deployment name="AccountFacade" location="AccountFacade">
<resource-ref-mapping location="..." name="jdbc/..."/>
</entity-deployment>
<entity-deployment name="RestrictiveAccountFacade" location="RestrictiveAccountFacade" isolation="serializable">
<resource-ref-mapping location="..." name="jdbc/..."/>
</entity-deployment>
这样做是否存在风险,任何副作用或未指明的行为?
答案 0 :(得分:0)
如上所述,这是完全可以的。应该注意的是,就容器而言,AccountFacade
和RestrictiveAccountFacade
将是两个完全不相关的会话bean。
但是RestrictiveAccountFacade
具有与AccountFacade
相同的jdbc资源的事务可序列化访问权限,因此它们仅在事务隔离级别上相互干扰。
因此,如果AccountFacade
需要访问与参与RestrictiveAccountFacade
的交易相同的记录,则可能会阻止RestrictiveAccountFacade
。
同样,AccountFacade
交易将被阻止在{{1}}在其交易中使用的同一记录上。