0

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>

这样做是否存在风险、任何副作用或未指明的行为?

4

1 回答 1

0

正如您上面提到的那样,这完全可以。应该注意的是,就容器而言AccountFacadeRestrictiveAccountFacade这将是两个完全不相关的会话 bean。

但是RestrictiveAccountFacade,事务可序列化访问相同的 jdbc 资源,AccountFacade因此它们只会在事务隔离级别相互干扰。

因此AccountFacade,如果它需要访问与参与的事务相同的记录,则可能会被阻止RestrictiveAccountFacade

同样RestrictiveAccountFacade,事务将在与其事务中使用的记录相同的记录上被阻止AccountFacade

于 2010-01-15T16:57:44.033 回答