Configurando BD H2 no JBoss 7

outubro 20, 2011

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

Deixe um comentário