Segunda-feira, Março 26, 2007

Sobre Annotations e Deployment Descriptors no EJB 3.0

Deployment é o conjunto de atividades que fazem com que um software, ou componentes de software, estejam prontos para uso. Durante o deployment, o container EJB lê as configurações contidas no deployment descriptor ou nas annotations no código-fonte e prepara um ambiente padronizado para a execução dos beans.

Ou seja, o deployment descriptor especifica quais serviços de infra-estrutura o container EJB proverá aos enterprise beans, desde que o deployment seja feito num container EJB certificado.

Annotation (metadado)

Deployment descriptor é um arquivo XML, portanto propenso a erros, e acrescenta grande complexidade ao ciclo de vida de desenvolvimento. As annottions para EJB foram introduzidas para ser uma alternativa aos deployment descriptors e, conseqüentemente, aliviar o desenvolvedor da sua complexidade inerente.

Annotation, ou metadado, é um elemento que pode ser adicionado a um pedaço de código para fornecer informações adicionais sobre esse código. A JSR-175 (A Metadata Facility for the Java Programming Language), íncluída no J2SE 5.0, fornece o meio para criação e processamento de annotations. A JSR-220 definiu uma série de annotations específicas para o desenvolvimento de enterprise beans.

Entretanto, deployment descriptors não foram eliminados, nem estão ultrapassados. Foram mantidos como forma redundante de informação sobre o deployment de um enterprise bean; isto é, podem ser utilizados em conjunto com os metadados. Nesse caso, o deployment descriptor tem precedência sobre a sua annotation equivalente.

Deployment Descriptors Proprietários

Há certos serviços providos pelos containeres que são específicos de cada container EJB, indo além do que define a especificação JSR-220, como clustering e load balancing - uma forma de diferenciação entre servidores Java EE.

A configuração necessária para esses serviços é feita em deployment descriptors proprietários. Esses serviços geralmente podem ser ajustados através de suas respectivas annotations, nesse caso, tornando o código-fonte não portável entre os diferentes servidores.

Annotations in Action

As duas figuras abaixo, retiradas do Apêndice 2 do livro Mastering Enterprise JavaBeans 3.0, demonstram como os metadados ajudam a reduzir a complexidade do desenvolvimento de enterprise beans.


Perceba que as annotations @Stateful, @Remote e @Interceptors equivalem a 16 linhas de código XML de um deployment descriptor equivalente. Além disso, os metadados são inerentemente ligados ao código-fonte, enquanto o deployment descriptor é externo ao código.


Nem Tudo São Flores

O uso de annotation simplifica e agiliza o desenvolvimento de enterprise beans, contudo não substitui completamente os deployment descriptors.

Quando os papéis de Bean Provider e EJB Deployer são executados por pessoas diferentes, pode haver confusão e retrabalho ao definir a configuração do deployment. Nesse caso, como os metadados estão presentes no código-fonte, se o EJB Deployer precisar verificar ou alterar essa configuração, será necesário todo o trabalho para chegar ao código-fonte, inspecioná-lo e alterá-lo.

Principalmente quando a mudança na configuração do deployment é freqüente, é indicado uma separação de responsabilidades bem definida. A configuração deve ficar sob incubência exclusiva do Bean Provider ou do EJB Deployer.

Leitura Recomendada:

Fontes Utilizadas:
  • SRIGANESH, Rima Patel; BROSE, Gerald; SILVERMAN, Micah. Mastering Enterprise JavaBeans 3.0. Indianapolis - Indiana: Wiley Publishing, Inc, 2006.
  • Software Deployment

0 comentários: