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

Apenas beans Enterprise JavaBeans (EJB) 2.x: Projete um aplicativo J2EE e os enterprise beans necessários.
  • Antes de desenvolver beans de entidade com CMP (Container-Managed Persistence), leia o tópico Controle de Simultaneidade.
Apenas beans EJB 3.x: Projete um aplicativo Java™ EE e os enterprise beans que ele necessita.
  • 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

As duas abordagens básicas para selecionar ferramentas para o desenvolvimento de enterprise beans são as seguintes:
  • É 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

  1. Se necessário, migre qualquer código preexistente para a versão necessária da especificação EJB.

    Aplicativos gravados na especificação EJB versões 1.1, 2.0, e 2.1 podem executar sem alteração no contêiner EJB 3.x. Consulte o tópico Migrando Código do Enterprise Bean para a Especificação Suportada.

  2. Grave e compile os componentes do enterprise bean.
    • No mínimo, um bean de sessão desenvolvido com as especificações EJB 3.x requer uma classe de bean.
    • Um bean da sessão EJB 1.1 requer, pelo menos, uma classe de bean, uma interface inicial e uma interface remota. Um bean de entidade EJB 1.1 requer uma classe de bean, uma classe de chave primária, uma interface inicial e uma interface remota.
    • Um bean de sessão EJB 2.x requer, pelo menos, uma classe de bean, uma interface home ou home local e uma interface remota ou local. Um bean de entidade EJB 2.x requer uma classe de bean, uma classe de chave primária, uma interface home remota ou home local e uma interface remota ou local. Os tipos de interfaces são interligados: se você implementar uma interface local, você deve definir também uma interface home local.
      Atenção: A classe de chave primária pode ser desconhecida. Consulte o tópico Classe de Chave Primária Desconhecida para obter informações adicionais.
    • Um bean orientado a mensagens requer apenas uma classe de bean.
  3. Para cada bean de entidade, conclua o trabalho para tratar das operações de persistência.

    Para módulos EJB 3.x, considere a utilização da especificação JPA (Java Persistence API) para desenvolver entidades persistentes POJO (Plain Old Java Object). Revise o tópico Java Persistence API para obter informações adicionais. Se você optar por desenvolver beans de entidade para especificações EJB anteriores, siga estas etapas:

    • Crie um esquema de banco de dados para os dados persistentes do bean de entidade.
      • Para beans de entidade com CMP, você deve armazenar os dados persistentes do bean em um dos bancos de dados suportados. A ferramenta de montagem gera código SQL automaticamente para criar tabelas do banco de dados para beans de entidade CMP. Se os beans CMP requererem mapeamentos de banco de dados complexos, recomenda-se usar o Rational Application Developer para gerar código para as tabelas de bancos de dados. Para obter informações adicionais sobre como usar as ferramentas de montagem, consulte o centro de informações da ferramenta de montagem.
      • Para os beans de entidade com BMP (persistência gerenciada pelo bean), é possível criar o banco de dados e a tabela do banco de dados utilizando as ferramentas do banco de dados ou utilizar um banco de dados e uma tabela de banco de dados existentes.

      Para obter informações adicionais sobre como criar bancos de dados e tabelas de bancos de dados, revise a documentação do banco de dados.

    • (Apenas para beans de entidade CMP para EJB 2.x)

      Defina consultas do localizador com EJB QL.

      Com EJB QL, você define finders em termos de campos CMP e relacionamentos gerenciados pelo contêiner, da seguinte forma:
      • Os localizadores públicos são visíveis na interface inicial do bean. Implementadas na classe de bean, retornam somente interfaces remotas e tipos de coleção.
      • Finders Private, expressas como instruções SELECT, são utilizadas somente na classe de bean. Podem retornar interfaces local e remota, valores dependentes, outros tipos de campos CMP e tipos de coleção.
    • (Apenas beans de entidade CMP para EJB 1.1: uma extensão IBM®) Crie uma interface auxiliar do localizador para cada entidade CMP que contiver métodos localizadores especializados (diferentes do método findByPrimaryKey).
      É necessária uma lógica diferente do método findByPrimaryKey para cada método localizador que estiver contido na interface inicial de um bean de entidade com CMP:
      • A lógica deve ser definida em uma interface pública denominada NameBeanFinderHelper, em que Name é o nome do enterprise bean, por exemplo, AccountBeanFinderHelper.
      • A lógica deve estar contida em uma constante String denominada findMethodName WhereClause, em que findMethodName é o nome do método finder. A constante de Cadeia pode conter zero ou mais pontos de interrogação (?), que são substituídos da esquerda para a direita pelo valor dos argumentos do método localizador quando esse método é chamado.

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 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.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_dvdp
Nome do arquivo: tejb_dvdp.html