H2 é o banco de dados que vem pre-configurado no JBoss 7. Ele é leve, e permite salvar seus dados tanto na memória quanto em disco.

O padrão no JBoss 7 é o H2 salvar em memória. O problema é que para boa parte das disciplinas que leciono os alunos querem salvar seus dados de testes nos sistemas que desenvolvem de forma permanente. Para isso, abaixo vou mostrar como criar um datasource H2 que salve em disco.

Configurando Datasources no JBoss 7

O JBoss 7 vem com dois modelos de start: domain e standalone. Não vou entrar em detalhes em nenhum dos dois, mas usarei o standalone (modo de start padrão para quem quer fazer aplicações para testes) como base para este post.

Para configurar um datasource no standalone, abra o arquivo */jboss-as-web-7.0.0.*/standalone/configuration/standalone.xml. Procure por H2 e você irá encontrar algo parecido com isso abaixo na área datasources:

 <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
</connection-url>
<driver>h2</driver>
<pool>
 <prefill>
  false
 </prefill>
 <use-strict-min>
  false
 </use-strict-min>
 <flush-strategy>
  FailingConnectionOnly
 </flush-strategy>

</pool>
<security>
 <user-name>
  sa
 </user-name>
 <password>
  sa
 </password>
</security>
...

Perceba que esta é uma configuração do banco de dados H2 em memória, devido à connection-url ser: jdbc:h2:mem:*. A palavra mem está definindo que é um banco de dados em memória, ou seja, não serão persistidos os dados após término da aplicação/jboss. Para alterar isso:

  1. faça uma cópia de todo <datasource>…</datasource> e cole dentro da tag <datasources…> </datasources>;
  2. altere a valor da tag connection-url de jdbc:h2:mem:test para jdbc:h2:˜/test
  3. altere o jndi-name da tag <datasource para jndi-name=”java:jboss/datasources/testDS”
  4. Remova o valor da tag <password>, pois não há senha para este banco.
Para referenciar este datasource no persistence.xml de sua aplicação, basta colocar no <jta-data-source> (se você estiver usando jta):<jta-data-source>java:jboss/datasources/testDS</jta-data-source>

Perceba que se seu persistence.xml estiver referenciando o datasource com outro nome, você terá que alterar para o nome que você acabou de definir no arquivo standalone.xml.

A connection-url jdbc:h2:˜/test significa que será criado um arquivo test.h2.db (representa o banco de dados. São criados outros arquivos [test.trace.db e test.lock.db]) no home do usuário. Se você quiser especificar outro caminho, basta alterar o ~ para um outro path, tipo: jdbc:h2:/tmp/test.

Consultando o banco via SQL padrão (no browser)

Para fazer consultas ao banco de dados pelo browser (é necessário que não haja qualquer lock ao banco de dados, ou seja, precisa parar de executar o JBoss):

  • Na linha de comando, vá para pasta: {jboss-7}/modules/com/h2database/h2/main;
  • Execute a linha: java -jar h2*.jar

Será aberto o browser padrão. No campo JDBC URL, digite a connection-url configurada acima: jdbc:h2:~/test (se você configurou outra connection-url, leve em consideração a sua). Clique em conectar e faça pesquisas. Perceba que a linguagem SQL de pesquisa é a padrão, e não JPQL ou HQL.

Para configurar um banco de dados diferente do H2, vide: http://community.jboss.org/wiki/DataSourceConfigurationInAS7

Anúncios

Esse post tem por finalidade configurar um ambiente de desenvolvimento para o JEE 6, utilizando a tecnologias:

e mostrar ao final o desenvolvimento de um servlet.

Tomo como padrão que se tenha instalado jdk 6 ou superior. Se você não o tem baixar aqui.

JBoss 7

Esta versão do JBoss vem por padrão com a configuração lightning, iniciando apenas os serviços básicos e fazendo com que os outros sejam executados sob demanda. O resultado disso é um startup muito rápido, em torno dos 4s, dependendo do computador. Para saber mais sobre essa versão do JBoss, clique aqui.

Para instalar o JBoss, basta baixá-lo em Servidor de Aplicação JBoss 7 versão comunidade e descompactá-lo (é independente de sistema operacional). Sugiro criar um pasta java em seu computador e descompactá-lo lá.

Para executar o JBoss pela linha de comando:

  • cd [pasta_jboss]/bin
  • standalone.bat (windows) ou ./standalone.sh (mac e linux)
Uma tela típica de início do JBoss é similar à de abaixo. Perceba que existe uma linha, ao final, informando o tempo de start do JBoss. Para ver a tela de boas vindas do JBoss no browser, digite na url: http://localhost:8080/ (se você deixou como padrão a porta 8080).
Após instalarmos o Eclipse Indigo vamos aprender a executar o JBoss por dentro dele.

Eclipse Indigo (3.7)

Baixe o Eclipse em IDE Eclipse Indigo (3.7) para desenvolvedores JEE. Escolha a versão correspondente ao sistema operacional. Execute o instalador.

JBoss Tools 3.3

Execute o Eclipse.



  • escolha na lista Work With: o JBoss Tools
  • escolha a opção All JBoss Tools 3.3

  • clique em next, aceite os termos da licença e vá clicando next até a conclusão da instalação. Dependendo da velocidade de sua rede pode demorar alguns minutos. Ao final, será preciso reiniciar o Eclipse

Acrescentando o JBoss ao Eclipse

  • clique em Windows -> Show View -> Servers
  • clique com o botão direito na área dos servidores e clique em New -> Server
  • escolha a opção JBoss AS 7.0 e clique em Next
  • em Home Directory escolha a pasta de instalação do seu JBoss (se vc seguiu minha recomendação, deverá estar em c:\java\[pasta_jboss]
  • Clique em Finish
Perceba que na aba Servers haverá o jboss que você inseriu, podendo ser executado pelo botão de Run (bola verde ao lado de um besouro no canto direito [este serve para executar o JBoss em modo debug]).

Primeira aplicação Web JEE 6

Para criar um projeto web no Eclipse:

  • clique em File -> New -> Project….
  • na opção web, escolha Dynamic Web Project
  • clique em Next
  • dê um no nome ao seu projeto e clique em Finish


Para criarmos um servlet (soma entre dois números), nesta versão do JEE ficou bem mais fácil, já que foram desenvolvidas várias anotações para diminuir a quantidade de configurações no web.xml.
Como boa prática, crie um pacote na pasta src em Java Resources do seu projeto. No meu caso criarei o pacote com.gugawag.aulas.servlets. Clique com o botão direito em cima dele e clique em New -> Servlet.
  • Dê um nome à classe do servlet. Costumo dar o nome com o sufixo Servlet
  • clique em Next
  • clique no URL Mapping (como seu servlet será chamado na URL) e edite o /SomaServlet
  • mude para /soma.do (isso não muda o servlet. Apenas padroniza a forma de chamá-los. Use o prefixo da sua escolha. Uso normalmente .do)
  • clique em Next
  • dos métodos a serem sobrescritos, deixe marcado apenas o doGet
  • clique em Finish
No método doGet, insira as linhas abaixo:
int numero1 = Integer.parseInt(request.getParameter("numero1"));
 int numero2 = Integer.parseInt(request.getParameter("numero2"));

PrintWriter out = response.getWriter();

out.write("A soma desses números é: " + (numero1 + numero2));

O Servlet deve ficar como mostrado na figura abaixo. Perceba o uso da anotação @WebServlet. É nela que se define como o seu servlet será chamado na url (/soma.do), o URL Mapping como visto em passo anterior.

Para executar esse sistema, clique com o botão direito em cima do projeto -> Run as -> Run on server. Um browser interno do eclipse aparecerá. O eclipse irá implantar o sistema (.war) no JBoss. Para ver o resultado desta implantação, olhe o log da aba Console. Se o JBoss ainda não estiver executando, o eclipse fará o trabalho.

Para testar o servlet, na área de url do browser do eclipse, ou de um browser a sua escolha, digite:

http://localhost:8080/ExemplosServlets/soma.do?numero1=10&numero2=5

Troque nesta url o nome do projeto ExemplosServlets pelo nome do projeto que você escolheu. Altere os valores passados para os parâmetros numero1 e numero2 a sua escolha. Um resultado similar à imagem abaixo deve aparecer.

Neste link você pode baixar o projeto no Eclipse deste servlet.