JBoss AS 7 – inovação nos servidores Java EE

Desenvolver com Java para web permite a criação de aplicações robustas e escaláveis. Entretanto, uma das principais queixas dos desenvolvedores consiste na questão dos servidores. De modo geral, diferente de Ruby ou PHP, criar e manter aplicações para web com Java consiste em ter que reiniciar o servidor a cada mudança nas classes, uma vez que Java não é uma linguagem interpretada. Esse “tempo gasto” com o servidor originou algumas frases que devem lhe soar de modo familiar, tais como: “Esse servidor é muito lento para startar!” ou “Dá tempo de tomar cinco cafés até que o deploy termine!“. Outro ponto de incômodo consiste na questão da complexidade de alguns servidores. Você já deve ter ouvido alguma pergunta do tipo “Qual desses infinitos XMLs devo modificar para ativar o que eu preciso?“. Muitas vezes os servidores Java EE, por mais ricos e robustos que fossem, geravam alguma confusão e certo transtorno.

Eis que o JBoss AS 7 vem para derrubar algumas dessas questões que geravam um enorme incômodo nos desenvolvedores. Usamos o JBoss AS há muito tempo, inclusive no nosso curso FJ-31, e o primeiro ponto que impressiona no AS 7 é seu tempo de start – em cerca dois segundos ou menos é possível iniciar uma instância do servidor (levantando alguma aplicação que esteja na pasta de deploys também). Não, você não leu errado, aproximadamente dois segundos. Para usuários de versões antigas do JBoss AS isso pode parecer um pouco absurdo, uma vez que o AS 5, por exemplo, tinha fama de levar muito tempo para iniciar após a realização de um deploy.

O Jboss AS 7 foi completamente reescrito, deixando de utilizar o JBoss Microcontainer para dar lugar ao JBoss Modular Service Container (MSC). Basicamente, em vez de adotar dependências de modo hierárquico na hora de iniciar o servidor, o MSC define dependências explícitas de modo similar a um grafo, sendo possível levantar diversos serviços de forma concorrente.

Mudanças em relação a versões antigas do JBoss AS

Falando em outras versões do JBoss AS, uma das mudanças que ocorreram consta no script de start. Não há mais o run.bat ou run.sh; este foi substituído pelo standalone.bat ou standalone.sh. Essa mudança se deu porque o AS 7 agora pode operar em dois modos: standalone, que é similar às versões anteriores do JBoss AS, onde um único processo é iniciado; ou operar em Managed Domain, onde múltiplas instâncias são iniciadas e regidas por uma instância central, tal qual mostra a figura abaixo:

JBossAS7 domain

Muito simplificadamente, a imagem acima ilustra o funcionamento do JBoss AS 7 em modo domain. Basicamente, um processo central (Domain Controller) rege múltiplas instâncias do AS 7 contidas em hosts diversos. Operar em modo domain é bastante interessante. Você pode obter mais informações na documentação oficial do JBoss AS 7.

JBoss AS 7 em produção

A boa notícia é que a maioria das aplicações Java EE que rodavam em versões antigas do JBoss AS e em outros servidores Java EE ou até mesmo servlet contaners, tais como Jetty e Tomcat, provavelmente funcionarão sem nenhuma configuração adicional ao serem movidas para o JBoss AS 7. Entretanto, é possível que seja necessário um ajuste ou outro devido ao Class Loading do AS 7, que é consideravelmente diferente de outros servidores, podendo carregar dependências equivocadas. Na maioria dos casos, declarar explicitamente as dependências no MANIFEST.MF resolve a os problemas. Por exemplo, para utilizar versões antigas ou que não sejam padrão do slf4j, basta adicionar ao MANIFEST.MF a seguinte linha:

Dependencies: org.slf4j.jcl-over-slf4j

Apesar de novo, já há projetos fazendo uso do JBoss AS 7 devido a suas inúmeras vantagens. Por exemplo, o Openshift, projeto de Cloud da Red Hat, utiliza o AS 7. Você inclusive pode realizar deploy de suas aplicações Java gratuitamente lá. O Torquebox, projeto que possibilita a criação de aplicações com JRuby on Rails, roda no AS 7 a partir da versão 2.

O JBoss AS 7 é bastante promissor para o desenvolvimento Java para web. O vídeo a seguir mostra um pouco dele na prática.

Você pode baixar o JBoss AS 7 aqui. Caso queira informações extras sobre a estrutura do AS 7, leia esse post publicado no In Relation To.

13 Comentários

  1. Andre Brito 13/10/2011 at 20:13 #

    Bem legal isso. Uma coisa que não gostei muito foi que quando estava experimentando o JBoss AS 7 tive que fazer algumas configurações meio chatas pra usar o MySQL. Antigamente eu só jogava o jar e já estava pronto pra usar e agora tive que criar umas pastas e fazer umas configurações num XML. Fiz isso a uns 3 meses. Tem que fazer dessa forma mesmo?

    Outra alternativa é o OpenEJB. Escrevi um resumo dele e, depois de uns dias, lançaram o JBoss AS 7, meio que ‘invalidando’ meu artigo :-\

    É esse daqui: http://dededesenv.blogspot.com/2011/07/lighweight-ejb-com-openejb.html

    Uma das vantagens que vi no OpenEJB é que ele é bem simples. Dá pra usar ele de forma bem tranquila em projetos pequenos / experimentais. Sem contar que a comunidade ajuda muito (os próprios desenvolvedores respondem as dúvidas num forum no Nabble).

  2. hannelita 13/10/2011 at 21:17 #

    Olá, André!
    De fato, algumas mudanças relativas a datasource ocorreram no JBoss AS 7. Por exemplo, não há mais o arquivo xxx-ds.xml na aplicação. Isso agora é feito de uma maneira bem simples através de uma annotation chamada @DataSourceDefinition, do JEE6. Há outras formas de configurar também, sugiro que dê uma olhada neste post. Caso você não queira utilizar essa annotation, você pode alterar diretamente o arquivo standalone.xml do AS 7. Em ambos os casos, você precisa do jar do MySQL. 🙂

    Muito bacana seu post! O OpenEJB também é um cara bacana usado junto ao TomEE 🙂 Mais informações, além do seu blog, é dar uma olhada no site da Apache – http://openejb.apache.org/

  3. Andre Brito 14/10/2011 at 09:57 #

    Ahnn… Todo território diferente que entramos geralmente ficamos com um pé atrás. Por enquanto é como estou com essas configurações do JBoss AS 7, provavelmente porque estou bem acostumado com o JBoss AS 5 e AS 6, apesar do ‘Golias’ que ele é. Mas lendo o link que me passou deu pra ver que a configuração do datasource (e de qualquer outra lib) ficou mais ‘modular’ – não é qualquer jar que entra ali, o que é uma coisa boa porque é mais fácil de controlar as dependências da aplicação (ficando mais difícil de acontecer aquelas incompatibilidades entre os jars).

    Por falar no TomEE, ele recentemente passou no TCK do JEE 6 Web Profile (mais detalhes, aqui http://jaxenter.com/tomee-be-small-be-certified-be-tomcat-38434.html ).

    ‘Papo pau’ pra esses caras do OpenEJB / TomEE porque são pessoas muito ‘gente boa’. Se você quer contribuir com o projeto deles (seja na forma de documentação, criando tutoriais ou escrevendo código), os caras recebem o desenvolvedor de braços abertos – diferente de muita gente na comunidade de software, que acham que tem o rei na barriga.

    Ops, fugi um pouco do escopo do seu artigo. Está de parabéns, foi bem escrito e deu pra ler e entender de forma tranquila.

    Continue escrevendo.

  4. Alan Diniz 12/04/2013 at 11:50 #

    Olá, estou estudando sobre o Jboss as 7 e estou com dificuldades para ativar as metrics do PU, alguém pode me ajudar? na verdade eu ativei, usei o sistema, mais não aparece nada.

  5. Ricardo Pinto Velasque 20/05/2013 at 09:03 #

    Bom dia gostaria de saber se tem algum forum que eu possa me associar para fazer parte e tirar duvidas sobre J-boss

    Grato

    Ricardo

  6. Paulo Silveira 20/05/2013 at 19:25 #

    @Ricardo, pode utilizar o http://www.guj.com.br

Deixe uma resposta