2015-03-21 6 views
0

Я более свежую к EJB, работая над приложением поддержки, использующим EJB2.0. Я просто просматриваю код приложения и пытаюсь понять его. Он имеет ejb-jar.xml с некоторыми сессионными компонентами, как показано ниже.Приложение против проверки подлинности контейнера в EJB

<?xml version="1.0" encoding="UTF-8"?> 
<!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>StatelessBean</ejb-name> 
    <home>com.example.interfaces.StatelessBeanHome</home> 
    <remote>com.example.interfaces.StatelessBean</remote> 
    <local-home>com.example.interfaces.StatelessBeanLocalHome</local-home> 
    <local>com.example.interfaces.StatelessBeanLocal</local> 
    <ejb-class>com.example.interfaces.StatelessBeanSession</ejb-class> 
    <session-type>Stateless</session-type> 
    <transaction-type>Container</transaction-type> 

    <security-identity> 
     <use-caller-identity> 
    </security-identity> 

    <resource-ref> 
     <res-ref-name>eis/SAPFactory</res-ref-name> 
     <res-type>javax.resource.cci.ConnectionFactory</res-type> 
     <res-auth>Application</res-auth> 
     <re-sharing-scope>Shareable</re-sharing-scope> 
    </resource-ref> 

    </session> 
</enterprise-beans> 
</ejb-jar> 

Я вижу, что аутентификация ресурсов может быть либо Применение или Контейнер на основе, в приведенном фрагменте это Применение, в некоторых других приложениях, которые я видел, что упоминается, как Контейнер, в чем же разница между ними? Когда использовать над другим. Кроме того, тип транзакции также указан как Контейнер, пожалуйста, бросьте также немного света на это.

ответ

1

<res-auth>Application</res-auth> означает, что приложение выполнит вход в ресурс. Например, для JDBC это означает, что приложение будет использовать getConnection(user, password). <res-auth>Container</res-auth> позволяет учетные данные для входа на сервер приложений, как правило, через конфигурацию, предоставляемую администратором сервера. Обычно аутентификация, контролируемая контейнером, предпочтительнее избегать жесткого кодирования информации пользователя/пароля в приложении или необходимости изобретать вторичный механизм для обеспечения конфигурации приложения.

для EJB означает, что по умолчанию контейнер EJB будет неявно начинать транзакции при вызове метода EJB и фиксации/откате (в зависимости от выданных исключений) при завершении метода EJB. Кроме того, атрибуты транзакции для каждого метода могут использоваться для изменения поведения транзакции, управляемой контейнером (приостанавливать/отклонять существующие транзакции при вызове метода и вообще не начинать глобальную транзакцию). <transaction-type>Bean</transaction-type> означает, что EJB должен сам начать/совершить/откат, используя UserTransaction.

+0

Для аутентификации в контейнерах мы не можем предоставить имя пользователя и пароль, записанные в кодировке, как getConnection (пользователь, пароль)? – srk

+0

Вы могли бы, но избегая этого, все это означает аутентификацию, управляемую контейнером. –