• Nenhum resultado encontrado

Configuração de Invocadores e Interceptadores para EJB 2

No documento Apostila JBoss Avancado Rev2 08122010 (páginas 67-71)

Laboratório 2.4. Monitoração via Zabbix

3. Administração de EJB

3.2.1. Configuração de Invocadores e Interceptadores para EJB 2

Para EJBs versão 2, as configurações de invocadores e interceptadores são ar- mazenadas no arquivo standardjboss.xml situado na pasta conf. Estas confi- gurações definem os tipos padrões de EJB, com algumas variações para cada tipo, por exemplo, utilizando um protocolo de acesso diferente (JRMP x JBoss Remoting) ou então incluindo ou não os recursos de clusterização. Nada impe- de o administrador de modificar as configurações de container de invocador existentes, ou de acrescentar configurações inteiramente novas.

Muitas das configurações de container são idênticas entre si, diferindo apenas na configuração de invocador referenciada por ela. Isto porque o mesmo tipo de EJB poderia ser acessado por diferentes protocolos de rede, ou seja, dife- rentes invocadores. Muitas configurações de invocadores, por sua vez, são idênticas entre si, diferindo apenas no MBean invocador, ou seja, no protocolo de rede utilizado para acesso pelos clientes.

Então as cadeias de interceptadores podem ser iguais entre várias configura- ções de containers e entre várias configurações de invocadores. É um fato que as várias configurações de container e invocadores para EJBs fornecidas por padrão pelo JBoss AS são altamente redundantes entre si. Por outro lado é bom ter várias variações pré-definidas e prontas para uso.

O arquivo standardjboss.xml se inicia definindo uma série de configurações de invocadores, ou <invoker-proxy-binding>. Cada configuração vincula um invocador a uma cadeia de interceptadores, definindo a estrutura e funcionali- dade do proxy que será publicado no serviço de diretório JNDI para acesso pe- los clientes.

Dentro do elemento <invoker-proxy-binding> temos uma referência ao MBean Invocador no sub-elemento <invoker-mbean>, seguida pela definição de uma cadeia de interceptadores de cliente, no elemento <client-intercep- tors>. Um exemplo é apresentado na listagem 3.1, que corresponde à confi- guração de invocador padrão para SLSB, utilizando o invocador unificado11.

Listagem 3.1 – Invoker proxy binding padrão um SLSB 1 <invoker-proxy-binding> 2 <name>stateless-unified-invoker</name> 3 <invoker-mbean>jboss:service=invoker,type=unified</invoker-mbean> 4 <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory> 5 <proxy-factory-config> 6 <client-interceptors> 7 <home> 8 <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor> 9 <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> 10 <interceptor>org.jboss.proxy.TransactionInterceptor</intercepto r> 11 <interceptor call-by- value="false">org.jboss.invocation.InvokerInterceptor</interceptor> 12 <interceptor call-by- value="true">org.jboss.invocation.MarshallingInvokerInterceptor</intercepto r> 13 </home> 14 <bean> 15 <interceptor>org.jboss.proxy.ejb.StatelessSessionInterceptor</i nterceptor> 16 <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> 17 <interceptor>org.jboss.proxy.TransactionInterceptor</intercepto r> 18 <interceptor call-by- value="false">org.jboss.invocation.InvokerInterceptor</interceptor> 19 <interceptor call-by- value="true">org.jboss.invocation.MarshallingInvokerInterceptor</intercepto r> 20 </bean> 21 </client-interceptors> 22 </proxy-factory-config>

11 Os tipos de invocadores fornecidos pelo JBoss AS, assim como os respectivos protocolos e suas características foram apresentados no curso básico (436 – JBoss.org para Administradores de Sistemas) e é um pré-requisito para este curso avançado.

3.2. EJB no JBoss AS

23 </invoker-proxy-binding>

Uma configuração de invocador existe para que ser referenciada por uma con- figuração de container (<container-configuration>). Várias destas configu- rações são definidas no standardjboss.xml, após as configurações de invoca- dores.

Nem todas as configurações de invocadores fornecidas de fábrica com o JBoss AS 4.2 são referenciadas pelas configurações de container também fornecidas de fábrica. Algumas delas, por exemplo a configuração de invocador state- less-rmi-invoker estão no arquivo standardboss.xml padrão apenas como alternativas para uso pelo administrador, que pode utilizá-las modificando as configurações de invocadores padrão ou diretamente pelo descritor proprietá- rio do EJB.

A listagem 3.2 apresenta a configuração padrão de container para um SLSB.

Listagem 3.2 – Cadeia de interceptadores padrão para um SLSB (standardjboss.xml) 1 <container-configuration>

2 <container-name>Standard Stateless SessionBean</container-name> 3 <call-logging>false</call-logging> 4 <invoker-proxy-binding-name>stateless-unified-invoker</invoker-proxy- binding-name> 5 <container-interceptors> 6 <interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</i nterceptor> 7 <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor> 8 <interceptor>org.jboss.ejb.plugins.SecurityInterceptor</interceptor > 9 <!-- CMT --> 10 <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor > 11 <interceptor transaction="Container">org.jboss.ejb.plugins.CallValidationInterceptor</in terceptor> 12 <interceptor transaction="Container">org.jboss.ejb.plugins.StatelessSessionInstanceInter ceptor</interceptor> 13 <!-- BMT --> 14 <interceptor transaction="Bean">org.jboss.ejb.plugins.StatelessSessionInstanceIntercepto r</interceptor> 15 <interceptor transaction="Bean">org.jboss.ejb.plugins.TxInterceptorBMT</interceptor>

16 <interceptor transaction="Bean">org.jboss.ejb.plugins.CallValidationInterceptor</interce ptor> 17 <interceptor>org.jboss.resource.connectionmanager.CachedConnectionI nterceptor</interceptor> 18 </container-interceptors> 19 <instance- pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool> 20 <instance-cache></instance-cache> 21 <persistence-manager></persistence-manager> 22 <container-pool-conf> 23 <MaximumSize>100</MaximumSize> 24 </container-pool-conf> 25 </container-configuration>

Na configuração de container, o elemento <invoker-proxy-binding-name> faz referência a um dos elementos <invoker-proxy-binding> definidos ante- riormente no arquivo. Em seguida, é definida a cadeira de interceptadores do lado servidor, dentro do elemento <container-interceptors>.

Observe que normalmente há uma correspondência entre os <interceptor> dentro de <client-interceptor> do <invoker-proxy-binding> e seus cor- respondentes dentro de <container-interceptor> do <container-configu- ration>.

emover certos interceptadores da cadeira eliminaria características do SLSB (ou do tipo de EJB para o qual a configuração foi definida) e ele deixaria de funcionar conforme o padrão Java EE. Então modificações sobre a cadeira devem ser feitas com cuidado e com conhecimento de causa, para não impactar no funcionamento das aplicações, Por outro lado, pode ser útil para o administra- dor pode atuar sobre a cadeira, inserindo interceptadores adicionais para depura- ção, profilling ou validações de segurança adicionais..

R

As configurações de container de EJB também incluem as configurações de ca- che, persistência e pool, que serão utilizadas de forma diferente para cada tipo de EJB. Estas configurações estão destacadas no final da listagem 3.2. O mesmo MBean EJBContainer cuida de todos os tipos de EJB no JBoss AS, en- tão algumas destas configurações só farão sentido para determinados tipos de EJB.

Por exemplo, não adianta configurar persistência para MDBs e SLSBs, pois eles não tem nenhum estado para ser passivado. Nem faz sentido configurar cache para nenhum um SLSB ou MDB, mas apenas para SFSBs ou Entity Be- ans. Já as configurações de pool em princípio se aplicam a todos os tipos de EJBs.

3.2. EJB no JBoss AS

Mais adiante, neste e nos próximos capítulos, serão vistas as configurações de

No documento Apostila JBoss Avancado Rev2 08122010 (páginas 67-71)