Um módulo Enterprise JavaBeans (EJB)
é usado para montar um ou mais enterprise beans em uma única unidade implementável. Um módulo EJB é armazenado em um arquivo de Java™ (JAR) padrão.
Um módulo de EJB contém o seguinte:
- Um ou mais enterprise beans implementáveis.
- Um descritor de implementação, armazenado em um arquivo Extensible Markup Language (XML). Este arquivo informa o conteúdo do módulo, define a estrutura e as dependências externas
dos beans no módulo e descreve como os beans devem ser utilizados no tempo de execução.
Não é necessário usar descritores de implementação XML em módulos EJB
3.x, embora descritores XML sejam suportados. Em vez de descritores de implementação, você pode usar anotações para fornecer metadados de componentes.
É possível implementar um módulo EJB como um aplicativo independente ou combiná-lo com outros módulos EJB ou com módulos da Web para criar um aplicativo Java. Um módulo de EJB é instalado e executado em um contêiner do enterprise bean.
Se desejar compactar um módulo do EJB 3.x com um descritor de implementação, há várias maneiras de se fazer isso. É possível empacotar um módulo EJB 3.x com
uma sessão de estilo EJB 3.x e/ou beans acionados por mensagens exclusivamente,
com uma sessão de estilo EJB 2.1 e/ou beans acionados por mensagens exclusivamente
ou uma combinação de beans de estilo 2.1 e 3.x. O descritor de implementação XML
deve ser um descritor de implementação Versão 3.x. É necessário
compactar os beans de entidade 2.1 em módulos com descritores de implementação 2.1.
Módulos EJB que contêm beans EJB 3.x devem ter pelo menos o nível de especificação
EJB 3.x durante a execução do produto. Para configurar o módulo EJB para suportar beans
EJB 3.x, é possível configurar o nível de descritor de implementação ejb-jar.xml como
3.0 ou 3.1, ou certificar-se de que o módulo não contenha um descritor de implementação
ejb-jar.xml. Se o nível do módulo for EJB 2.1 ou anterior, nenhuma função do EJB 3.x,
incluindo varredura de anotação ou injeção de recursos, será executada no tempo de execução.
Para obter informações adicionais sobre pacotes e implementação de beans EJB 3.x,
consulte o tópico Visão Geral de Pacotes do Módulo EJB 3.x.
Visualizações do Cliente Locais
A
especificação de EJB requer que apenas visualizações do cliente locais sejam suportadas
para EJBs empacotados dentro do mesmo aplicativo. Isto inclui inícios
locais, interfaces de negócios locais e a visualização sem interface. O produto permite acesso a visualizações do cliente local de EJBs empacotado com um aplicativo separado com algumas restrições:
- A interface local e todos os tipos de parâmetror, retorno e exceção
usados pela interface local devem estar visíveis para o carregador de classes
do aplicativo de chamada e do aplicativo EJB de destino. É possível
assegurar isto usando uma biblioteca compartilhada associada a um
carregador de classes do servidor ou usando uma biblioteca compartilhada isolada associada
a ambos os aplicativos. Leia o tópico Criando Bibliotecas Compartilhadas para obter mais
informações.
- Quando o aplicativo EJB de destino é interrompido, quaisquer referências em cache
para o EJB devem ser atualizadas. É possível concluir uma das ações a seguir:
- Reiniciar o aplicativo de chamada. A solução mais simples é
reiniciar o aplicativo de chamada sempre que você reiniciar um
aplicativo EJB de destino do qual ele depende.
- Obter uma nova referência do JNDI. Por padrão, as consultas do JNDI a partir
do namespace Java são armazenadas em cache e o cache deve ser desativado
ou limpo para obter uma nova referência. Leia o tópico Desenvolvendo Aplicativos
que Usam JNDI para obter mais informações.
As chamadas de método EJB
lançam
com.ibm.websphere.ejbcontainer.EJBStoppedException quando
o aplicativo EJB de destino foi interrompido. Se você tiver armazenado em cache a
referência EJB em uma variável de instância usando a injeção de @EJB
ou a consulta do JNDI, será possível capturar esta exceção e atualizar
a referência EJB executando uma consulta não em cache.
- Ative proxies EJB de local indireto para o aplicativo EJB de destino.
Isto faz com que o proxy EJB seja atualizado automaticamente quando o aplicativo for reiniciado. Ativar proxies locais indiretos causa alguma sobrecarga adicional para cada chamada de método EJB.
É possível ativar proxies locais indiretos usando, por exemplo, um console administrativo. Clique em . Especifique um nome do com.ibm.websphere.ejbcontainer.indirectLocalProxies e um valor de true para a propriedade customizada, em seguida aplique e salve as mudanças.