
Clique aqui para ler esse artigo em PDF.
JBoss Inicial
Uma introdução prática ao servidor J2EE livre
O JBoss é um servidor de aplicações que atende plenamente a especificação J2EE 1.3. Escrito inteiramente em Java, oferece compatibilidade com as principais plataformas utilizadas para servidores (Windows, Linux, Solaris etc.) e vem ocupando o espaço outrora ocupado por produtos como o WebLogic da BEA e WebSphere da IBM. Até o Windows 98 pode ser utilizado para desenvolver aplicações J2EE com o JBoss.
Este artigo é um “primeiros passos” no JBoss, demonstrando como instalar o servidor e como realizar o deployment de EJBs e aplicações web.
O JBoss é comparável, em recursos, aos seus concorrentes mais antigos, entretanto utiliza uma arquitetura inovadora, centrada no JMX, que o torna mais ágil no desenvolvimento e muito customizável para atender a situações específicas. Melhor ainda, o JBoss é software livre, de modo que seu sistema enterprise Java não estará limitado pelas pesadas taxas de licença por CPU ou por usuário. Várias empresas no Brasil e no mundo vêm utilizando o JBoss como base de suas soluções enterprise, entre elas o Dow Jones, fornecedor de cotações da bolsa de Nova York.
Arquitetura do JBoss
Na Figura 1 temos um diagrama bastante simplificado da arquitetura do JBoss. Observe que todos os serviços necessários ao J2EE estão presentes: JNDI, JTX, JMS, além dos containers de servlets e de EJBs. Todos os componentes do JBoss são MBeans (para mais informações sobre JMX e MBeans veja o artigo de Júlio César Lins, nesta edição). Assim, podem ser iniciados, parados ou reconfigurados com o servidor no ar. Você pode até mesmo construir o seu MBean para substituir qualquer serviço padrão do JBoss ou acrescentar novas capacidades – por exemplo um mecanismo alternativo de persistência para Entity Beans.

Figura 1. Arquitetura simplificada do JBoss
A flexibilidade do JBoss é ilustrada pela possibilidade de escolher entre dois containers web: o Jetty ou o Tomcat. Quando o Tomcat roda como um MBean sob o JBoss, ele herda capacidades que não existem no Tomcat isolado, como a possibilidade de se fazer redeployment de aplicações web sem reiniciar o servidor ou o suporte a clusters.
Como bônus, o JBoss oferece suporte a web services, de modo que clientes criados com outras linguagens e tecnologias possam acessar transparentemente seus EJBs – não há necessidade de construir um servlet para atuar como front-end.
Além disso, a distribuição padrão do JBoss inclui o banco de dados Hypersonic, também software livre escrito inteiramente em Java. Provavelmente você irá preferir confiar seus dados críticos a um servidor de banco de dados mais poderoso como o PostgreSQL ou o Oracle, mas a presença do Hypersonic na distribuição padrão permite que você inicie o desenvolvimento de aplicações J2EE imediatamente após instalar o JBoss, sem a necessidade de antes configurar fontes de dados.
Instalação e extensões
Para fazer a instalação, visite o site do JBoss e siga o link para downloads. Você terá opções de baixar os fontes ou binários do servidor, além de escolher a distribuição que inclui o Jetty (jboss-3.0.4.zip no momento da escrita deste artigo), ou a que incorpora o Tomcat (jboss-tomcat-3.0.4.zip). Basta descompactar o pacote ZIP em qualquer diretório e o JBoss fica pronto para rodar.
Antes de iniciar o servidor, certifique-se de que seu ambiente inclui a definição correta para a variável de ambiente JAVA_HOME. Podemos utilizar o Java 2 SDK (JSDK) versão 1.3 ou 1.4. Note que é necessário o JSDK completo; não é suficiente utilizar o JRE, pois o JBoss (como outros containers de servlets e de EJBs) necessita de acesso ao compilador Java. Portanto, certifique-se também de que o pacote tools.jar esteja presente no classpath. Tome cuidado, pois, caso seu classpath inclua algum outro pacote que implemente as APIs do J2EE (como o J2EE SDK da Sun), pode haver problemas na execução do JBoss.
Podemos iniciar o JBoss utilizando o script run.sh (ou run.bat) dentro do subdiretório bin do servidor; paramos o servidor utilizando o script shutdown.sh (ou shutdown.bat), dentro do mesmo diretório. Temos ainda os pacotes JAR executáveis run.jar e shutdown.jar, que fornecem uma maneira prática de iniciar e parar o JBoss dentro de um IDE como o Eclipse, NetBeans ou JBuilder. Podemos encontrar na internet plugins para integrar o JBoss à maioria dos IDEs no mercado – verifique na página do fornecedor do seu IDE.
Como o JBoss inclui vários serviços de rede, podem haver conflitos por portas TCP em sistemas como o Windows 2000 ou o Linux. Observe atentamente as mensagens exibidas pelo script de inicialização do JBoss para ter certeza de que está tudo bem. Você não precisa conhecer profundamente o JBoss ou servidores de aplicação J2EE: basta procurar por algo semelhante a um stack trace de uma exceção Java. A mensagem de erro indicará claramente qual a porta em conflito e qual serviço do JBoss não pôde ser inicializado; você terá a opção de remover o serviço conflitante, ou reconfigurar o JBoss para utilizar outra porta.
Quando aparecer a mensagem iniciando por “JBoss JMX Microkernel” (Figura 2), o servidor estará pronto para atender a requisições. Experimente abrir um navegador web e visitar a URL http://127.0.0.1:8080/jmx-console, que relaciona todos os serviços disponíveis no JBoss. A Figura 3 mostra um exemplo do que você deverá ver.

Figura 2. Servidor JBoss pronto para atender a requisições

Figura 3. Console JMX do JBoss
Desenvolvendo aplicações J2EE
O JBoss fornece tudo que se necessita para desenvolver aplicações J2EE (exceto, é claro, um SDK Java). Em especial, o pacote jboss-j2ee.jar, dentro do subdiretório client, fornece todas as APIs do J2EE, exceto pelas APIs de servlets. Estas podem ser encontradas no pacote javax.servlet.jar dentro do diretório server/default/lib, ou no diretório lib da sua configuração (veja o quadro “Configuração”). Caso você necessite do driver JDBC para o Hypersonic, ele está no pacote hsqldb.jar dentro do mesmo diretório.
Resumindo, você irá acrescentar os pacotes abaixo ao seu classpath para compilar aplicações J2EE utilizando o JBoss:
...