1.4. Permissões do método EJB

Um assembler do aplicativo pode usar a declaração do elemento <method-permission> para determinar as funções que permitem invocar a página principal do EJB e métodos de interface remota.
O elemento <method-permission>

Figura 1.4. O elemento <method-permission>

Cada elemento <method-permission> contém um ou mais elementos <role-name>. O <role-name> define funções lógicas que são permitidas para acesso aos métodos EJB como identidade pelos elementos filho <method>. Você pode especificar um elemento <unchecked> ao invés do elemento <role-name> para declarar que qualquer usuário autenticado pode acessar os métodos identificados pelos elementos filho do método. Além disso, você pode declarar que ninguém deve possuir acesso a um método que possui o elemento exclude-list. Caso um EJB possua métodos que não foram declarados como acessíveis pela função usando um elemento <method-permission>, o padrão dos métodos EJB é a exclusão dos mesmos para uso. Isso é equivalente à padronização dos métodos no exclude-list.
elemento <method>

Figura 1.5. elemento <method>

Existem três estilos suportados das declarações do elemento do método.
O primeiro é usado para referenciação de todos os métodos da interface do componente e página principal do bean enterprise nomeado:
<method>
    <ejb-name>EJBNAME</ejb-name>
    <method-name>*</method-name>
</method>
O segundo estilo é usado para referenciação de um método específico da página principal ou interface do componente do bean enterprise nomeado:
<method>
    <ejb-name>EJBNAME</ejb-name>
    <method-name>METHOD</method-name>
                </method>
Caso existam métodos múltiplos com o mesmo nome sobrecarregado, este estilo refere-se a todos os métodos sobrecarregados.
O terceiro estilo é usado para referir-se a um método específico com um conjunto de métodos com um nome sobrecarregado:
<method>
    <ejb-name>EJBNAME</ejb-name>
    <method-name>METHOD</method-name>
    <method-params>
        <method-param>PARAMETER_1</method-param>
        <!-- ... -->
        <method-param>PARAMETER_N</method-param>
    </method-params>
</method>
O método deve ser definido na página principal ou interface remota do bean enterprise especificado. Os valores do elemento <method-param> são um nome inteiramente qualificado do tipo de parâmetro correspondente. Caso existam métodos múltiplos com a mesma assinatura sobrecarregada, a permissão é aplicada a todos os métodos sobrecarregados de combinação.
O elemento <method-intf> pode ser usado para diferenciar métodos com o mesmo nome e assinatura definidos em ambas interfaces remotas e página principal de um bean enterprise.
O Exemplo 1.5, “uso do elemento <method-permission>” fornece amostras completas do uso do elemento <method-permission>.

Exemplo 1.5. uso do elemento <method-permission>

<ejb-jar>
    <assembly-descriptor>
        <method-permission>
            <description>The employee and temp-employee roles may access any
                method of the EmployeeService bean </description>
            <role-name>employee</role-name>
            <role-name>temp-employee</role-name>
            <method>
                <ejb-name>EmployeeService</ejb-name>
                <method-name>*</method-name>
            </method>
        </method-permission>
        <method-permission>
            <description>The employee role may access the findByPrimaryKey,
                getEmployeeInfo, and the updateEmployeeInfo(String) method of
                the AardvarkPayroll bean </description>
            <role-name>employee</role-name>
            <method>
                <ejb-name>AardvarkPayroll</ejb-name>
                <method-name>findByPrimaryKey</method-name>
            </method>
            <method>
                <ejb-name>AardvarkPayroll</ejb-name>
                <method-name>getEmployeeInfo</method-name>
            </method>
            <method>
                <ejb-name>AardvarkPayroll</ejb-name>
                <method-name>updateEmployeeInfo</method-name>
                <method-params>
                    <method-param>java.lang.String</method-param>
                </method-params>
            </method>
        </method-permission>
        <method-permission>
            <description>The admin role may access any method of the
                EmployeeServiceAdmin bean </description>
            <role-name>admin</role-name>
            <method>
                <ejb-name>EmployeeServiceAdmin</ejb-name>
                <method-name>*</method-name>
            </method>
        </method-permission>
        <method-permission>
            <description>Any authenticated user may access any method of the
                EmployeeServiceHelp bean</description>
            <unchecked/>
            <method>
                <ejb-name>EmployeeServiceHelp</ejb-name>
                <method-name>*</method-name>
            </method>
        </method-permission>
        <exclude-list>
            <description>No fireTheCTO methods of the EmployeeFiring bean may be
                used in this deployment</description>
            <method>
                <ejb-name>EmployeeFiring</ejb-name>
                <method-name>fireTheCTO</method-name>
            </method>
        </exclude-list>
    </assembly-descriptor>
</ejb-jar>