Desenvolvendo Beans Corporativos
Um dos dois cenários de desenvolvimento de enterprise bean é geralmente utilizado com o produto. O primeiro é a linha de comandos utilizando Ant, Make, Maven ou ferramentas semelhantes. O segundo é um ambiente de desenvolvimento e construção baseado em IDE. As etapas deste artigo centralizam-se no desenvolvimento sem um IDE.
Antes de Iniciar
- Antes de desenvolver beans de entidade com CMP (Container-Managed Persistence), leia o tópico Controle de Simultaneidade.
- Antes de desenvolver os beans da entidade com o CMP, leia o tópico, Controle de simultaneidade. Lembre-se que os módulos EJB 3.x não suportam beans de entidade. Você deve continuar colocando beans de entidade nos módulos de nível EJB 2.x.
Sobre Esta Tarefa
- É possível utilizar uma das ferramentas IDE disponíveis que geram automaticamente partes significativas do código enterprise bean, e contêm ferramentas integradas para compactar e testar enterprise beans. O produto Rational Application Developer
é o IDE recomendado.
Inclua install_root/dev/JavaEE/j2ee.jar no caminho de construção do projeto IDE para resolver pendências de compilação nas classes de API do novo EJB 3.x. O assistente de código funciona quando esse arquivo JAR é incluído no caminho de construção do projeto. Se você definir um servidor (consulte Perspectiva J2EE), aponte o servidor para o diretório de instalação do produto. Quando um projeto relacionado ao Java EE é criado no Rational Application Developer, o projeto automaticamente inclui install_root/dev/JavaEE/j2ee.jar. no caminho de construção do projeto.
- Se você tiver decidido desenvolver enterprise beans sem um IDE, você precisará
de, pelo menos, um editor de texto ASCII. Também é possível usar uma ferramenta de desenvolvimento Java que
não suporte o desenvolvimento de enterprise beans. Em seguida, é possível usar as ferramentas disponíveis
no Kit de Desenvolvimento de Software (SDK) Java
e nesse produto para montar, testar e implementar os beans.
Como a ferramenta do conjunto, um ambiente de construção de linha de comandos Java EE padrão exige alguma mudança para utilização de módulos EJB 3.x. Assim como com padrões anteriores de desenvolvimento de aplicativos do Java EE, você deve incluir o arquivo j2ee.jar localizado no diretório install_root/dev/JavaEE no caminho da classe do compilador. No diretório install_root/samples/src/TechSamp há um exemplo de um ambiente de construção da linha de comandos usando Ant.
As etapas a seguir suportam principalmente a segunda abordagem, desenvolvimento sem um IDE.
Procedimento
Exemplo: Utilizando um Bean de Entidade de Leitura
Este cenário de uso e o exemplo mostram como escrever um aplicativo Enterprise JavaBeans (EJB) que utiliza um bean de entidade somente de leitura.
- Cenário de uso
-
Um cliente possui um banco de dados de informações com taxa de preço e de remessa de catálogo que são atualizadas diariamente antes das 10:00 PM no horário local (22:00 no formato de 24 horas). Ele deseja gravar um aplicativo EJB que tem acesso de leitura a esses dados. Ou seja, esse aplicativo nunca atualiza o banco de dados de preço. A atualização é feita através de algum outro aplicativo.
- Por exemplo:
-
A interface local do bean de entidade do cliente pode ser:
public interface ItemCatalogData extends EJBLocalObject { public int getItemPrice(); public int getShippingCost(int destinationCode); }
O código no método SessionBean sem preservação de estado (assumindo que é TxRequired) que chama esse EntityBean para calcular o custo total incluindo remessa, seria semelhante a:
..... // Ocorrem algumas etapas transacionais antes desse ponto, tal como remoção do item do // inventário, etc. // Agora obtenha o preço desse item e inicie para calcular o custo total para o comprador ItemCatalogData theItemData = (ItemCatalogData) ItemCatalogDataHome.findByPrimaryKey(theCatalogNumber); int totalcost = theItemData.getItemPrice(); // ... algum outro processamento, etc. no período intermediário // ... // ... // Adicionar custos de remessa totalcost = totalcost + theItemData.getShippingCost(theDestinationPostalCode);
No momento da montagem do aplicativo, o cliente define os parâmetros de cache EJB para esse bean da seguinte maneira:- ActivateAt = ONCE
- LoadAt = DAILY
- ReloadInterval = 2200
Recurso Reprovado: Os atributos reloadInterval e reloadingEnabled das extensões do descritor de implementação IBM, incluindo a extensão do arquivo WAR (WEB-INF/ibm-web-ext.xmi) e a extensão do aplicativo (META-INF/ibm-application-ext.xmi) estavam descontinuados.depfeat
Na primeira chamada para o método getItemPrice() após às 22:00 toda noite, o contêiner EJB recarrega as informações de preço a partir do banco de dados. Se o relógio marcar 22:00 entre a chamada para getItemPrice() e getShippingCost(), o método getShippingCost() ainda retornará o valor que possuía antes de quaisquer mudanças no banco de dados que possam ter ocorrido às 22:00, porque a primeira chamada de método nessa transação ocorreu antes das 22:00. Portanto, o preço do item e o custo de remessa permanecem em sincronia entre si.
O que Fazer Depois
Monte os beans em um ou mais módulos EJB. Consulte o tópico Montando módulos EJB, ou Montando módulos EJB 3.x se estiver usando beans EJB 3.x.