O projeto Apache Geronimo lançou o primeiro release marco do servidor Geronimo 3.0. Os conjuntos do servidor de aplicativos 3.0 são fornecidos como uma implementação dos recursos de Perfil da Web de Java EE 6, tais como Servlet 3.0, JSP 2.2, EL 2.2, JSF 2.2 e JPA 2.0.
Geronimo 3.0 M1 também apresenta suporte para o modelo de programação de aplicativos Aries, baseado em OSGi, incluindo novos recursos de desenvolvimento, implementação e serviço – com Blueprint, consulta do JNDI e suporte para pacote configurável de aplicativo da Web. Este artigo oferece uma visão geral de alguns desses novos recursos significativos
Novos recursos e tecnologias suportadas
Apache Geronimo é uma estrutura de servidor modular composta de tempo
de execução e componentes Java EE principais, bem como vários projetos
Apache que fornecem a desenvolvedores Java ferramentas de
desenvolvimento de aplicativos em uma implementação leve.
Geronimo tem
um design de arquitetura baseado na Inversão de Controle, geralmente
chamada de injeção de dependência. O kernel do Geronimo
é criado especialmente para gerenciar as dependências que formam a
implementação do servidor Java EE.
Esse design possibilita que
desenvolvedores do Geronimo integrem componentes de software livre
testados para fornecer serviços tais como Java Persistence API (JPA),
Enterprise JavaBeans (EJB) e Sistema de Mensagens Java (JMS).
O servidor de aplicativos Apache Geronimo 2.0 é
compatível e certificado com a especificação Java EE 5. Geronimo 3.0 é
um novo release que inclui serviços e componentes do nível do Java EE 6 e
que é executado sobre uma estrutura OSGi.
Geronimo 3.0 agora fornece
suporte para desenvolver aplicativos com o modelo de programação
corporativo OSGi, fornecido por meio de integração com componentes
Apache Aries. Aplicativos definidos em pacotes configuráveis podem ser
gerenciados em isolamento como serviços, para melhorar a
sustentabilidade do tempo de execução do servidor.
Este release é uma adição àquele que é considerado o
servidor de aplicativos de software livre mais flexível e fácil de usar
para desenvolvedores. O driver de marco Geronimo 3.0 M1 foi lançado em
junho de 2010. Neste artigo vamos destacar alguns dos novos recursos
significativos disponíveis no Geronimo 3.0-M1.
Blueprint e EBAs
Apache Aries fornece alguns componentes que implementam várias
especificações corporativas de OSGi. Aries Blueprint implementa a
especificação Blueprint Container, que fornece um contêiner de injeção
de dependência para aplicativos OSGi.
Blueprint padroniza convenções de
Spring e usa uma definição XML para descrever a configuração e ligação
dos componentes. Geronimo 3.0 usa o contêiner Blueprint, junto com
outros componentes do Apache Aries, para fornecer o modelo de
programação EBA (Enterprise Business Archive) e implementação de pacote.
Um arquivo EBA é uma maneira de especificar um aplicativo
OSGi. Um aplicativo OSGi é uma coleção de pacotes configuráveis que,
juntos, formam uma função de negócios coerente, assim como um arquivo
EAR no modelo de programação Java EE.
Por exemplo, um arquivo EBA pode
conter um pacote configurável Blueprint e um pacote configurável de
persistência JPA. O pacote Blueprint pode conter componentes nos quais é
injetada uma unidade de persistência definida no pacote configurável de
persistência.
JPA (Java Persistence API) é uma maneira padrão de mapear
um relacionamento de um POJO (Plain Old Java Object) para a camada de
persistência. JPA 2.0 é agora uma especificação independente, separada
da especificação JavaBeans 3.0. Geronimo usa o componente Apache OpenJPA
para fornecer acesso a dados persistentes.
Um EBA distribuído como serviço registrado simplifica a
reutilização de módulos entre aplicativos.
Isso permite flexibilidade para que os desenvolvedores façam teste de
unidade no ambiente de servidor com o conjunto de ferramentas
disponível.
Geronimo 3.0 M1 também integra o componente JNDI (Java
Naming and Directory Interface) do Apache Aries. Ele oferece uma maneira
fácil de fornecer acesso a um registro de serviço com uma consulta do
JNDI. Esse recurso também permite que serviços OSGi sejam injetados em
módulos Java EE regulares, com a anotação @Resource.
Pacotes configuráveis da Web
Geronimo 3.0 M1 também suporta aplicativos da Web OSGi. Aplicativos da
Web OSGi trazem suporte para módulos WAR para o OSGi. O suporte a
aplicativos OSGi no Geronimo é complementar ao modelo de programação
Java EE 6 e permite o uso de componentes Java de maneira modular, como
uma coleção de módulos de aplicativo e recursos da Web.
Esses módulos de
aplicativos são empacotados como pacotes configuráveis contendo
arquivos de recursos, classes e metadados em um arquivo formatado JAR.
Os metadados do pacote configurável especificam versões de módulo,
declarações de dependência e a visibilidade do pacote no XML.
Dessa maneira, os pacotes configuráveis podem ser ativados
simultaneamente com seus respectivos caminhos de classe e reagir a
mudanças do ciclo de vida independentemente.
O pacote configurável pode
resolver dependências de forma dinâmica, baseado nos eventos de estado
do ciclo de vida e degradar de maneira harmoniosa se a resolução
fracassar no tempo de execução.
Um Web application bundle (WAB) é um
pacote configurável com dependências específicas em comum especificadas e
é essencialmente um arquivo WAR com os metadados OSGi apropriados.
Um
arquivo WAR pode ser convertido automaticamente em um WAB usando uma URL
“webbundle” especial durante a instalação do pacote configurável.
Módulos WAR existentes podem se tornar arquivos WAB especificando
dependências do pacote configurável com versões específicas de um
arquivo de manifesto. Dessa forma, podemos dizer WAR : WBA :: EAR : EBA.
WABs suportam Servlets, JSP e anotações.
Recursos de Java EE
Geronimo 3.0 M1 contém partes dos novos recursos de perfil da Web de
Java EE 6, Servlet 3.0 e JSP 2.2 são agora fornecidos com suporte para o
contêiner Tomcat 7.
O principal foco da especificação Servlet 3.0 é a
extensibilidade da estrutura da Web. Novos recursos de linguagem Java
são expostos para fornecer anotações de servlets a fim de descrever
metadados que eram anteriormente configurados no arquivo descritor
web.xml.
O suporte a anotações fornece registro programático e
inicialização de servlets, filtros de servlets e listeners de contexto.
Em vez de usar um único arquivo web.xml longo para declarar servlets e
filtros, o contêiner pode usar vários fragmentos de web.xml para montar o
descritor do aplicativo, com regras para evitar conflitos.
Servlet 3.0 no Tomcat também fornece processamento
assíncrono do ciclo de solicitação/resposta. Esse é um recurso
importante, permitindo entrada sem bloqueio, manipulação e saída para
criar comportamento estilo Web 2.0 no aplicativo ou serviço.
A especificação Servlet 3.0 também está alinhada com
suporte a Java Server Pages 2.2. O foco principal de JSP 2.2 é a
produtividade do desenvolvedor. Uma camada da Web com capacidade de
plugue é fornecida por meio do novo Idioma de Expressão Unificado,
conhecido apenas como EL.
EL 2.2 reúne linguagens de expressão em JSP e
Java Server Faces para lidar melhor com avaliação de tags, propriedades
de objeto e suas referências.
Expressões de EL podem ser usadas
diretamente nos arquivos de tags JSP ou nas próprias páginas. Java
Server Faces 2.0 agora usa Facelets para a interface com o usuário,
fornecendo modelos de exibição simples.
JSF 2.0 também fornece anotações para acesso a bean
gerenciado, registro de listener, etc. Isso significa que um POJO com
anotação apropriada pode se tornar um bean gerenciado no tempo de
execução sem configuração em separado.
O escopo do ciclo de vida do bean
é gerenciado por essa convenção. Essas anotações podem ser usadas em
componentes, validadores ou renderizadores.
O modelo de navegação também é atualizado para permitir
manipulação declarativa baseada em convenção da lógica de negócios, em
vez de ações explícitas na configuração.
Há três maneiras de especificar
a navegação sem configuração ou com configuração mínima, e a API
permite que consultas e modificações sejam feitas nas regras de
navegação no tempo de execução. Esses recursos são muito úteis e
facilitam o desenvolvimento de aplicativos da Web com Geronimo 3.0.
Conclusão
A missão principal do projeto de software livre Apache Geronimo é
criar uma estrutura de servidor de aplicativos modular a partir dos
melhores componentes de software livre.
Apache Geronimo 3.0 é um
servidor de aplicativos Java EE flexível, desenvolvido tendo a
customização em mente. Ele fornece maior facilidade de uso e uma
experiência aprimorada para o desenvolvedor, com uma pequena área de
cobertura.
Cinco distribuições do Apache Geronimo 3.0 oferecem opções de
montagem com contêineres da Web Tomcat ou Jetty, além de OpenJPA ou sem
serviços de persistência.
O release Geronimo 3.0 M1 oferece vários
componentes Java EE 6 essenciais fornecidos como serviços OGSi, bem como
suporte para o modelo de programação de aplicativos OSGi.
Este servidor
é um marco atraente para desenvolvedores Java que procuram uma
estrutura robusta para customizar serviços de infraestrutura de
aplicativos reutilizáveis.
Recursos
Aprender
Obter produtos e tecnologias
Discutir
- Wiki do Apache Geronimo
- Wiki de documentação do Apache Geronimo
- Grupo de WebSphere Emerge no IBM developerWorks
- Fórum do IBM WebSphere Application Server Community Edition
***
artigo publicado originalmente no developerWorks Brasil, por Ryan Boyles
Ryan Boyles é engenheiro de software do IBM Software
Group, trabalhando na equipe de Divulgação Técnica do WebSphere em
Research Triangle Park, na Carolina do Norte. Ele é um desenvolvedor que
defende tecnologias emergentes e software de aplicativo da Web.
Trabalhou por nove anos no desenvolvimento da interface com o usuário do
Software Tivoli. Ryan escreve sobre infraestrutura de aplicativos
WebSphere em seu blog.







