Могу ли я иметь несколько объявлений EJB для одних и тех же классов Home и Remote?

Можно ли объявить несколько бинов в ejb-jar.xml (в EJB 1.1) дескриптор развертывания с разными именами, но теми же классами позади?

Например:

<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>

Есть ли риск, связанный с этим, какие-либо побочные эффекты или неопределенное поведение?

1 ответ

Это нормально, как вы упомянули выше. Следует отметить, что в зависимости от контейнера AccountFacade а также RestrictiveAccountFacade будет два совершенно не связанных сессионных компонента.

тем не мение RestrictiveAccountFacade имеет сериализуемый доступ к транзакции к тому же ресурсу jdbc, что и AccountFacade поэтому они будут мешать друг другу только на уровне изоляции транзакций.

следовательно AccountFacade может быть заблокирован, если ему нужен доступ к той же записи, что и участие в транзакции RestrictiveAccountFacade,

так же RestrictiveAccountFacade транзакция будет заблокирована на той же записи, что и используемая AccountFacade в этой транзакции.

Другие вопросы по тегам