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.

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.

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>