Configurando o Pool de conexões

Configurando o classpath

Antes da criação de conexões com o banco de dados certifique-se que as Classes do drive JDBC devem está acessível pelo classpath. Para isto, use o arquivo %JOnAS_ROOT%/bin/nt/config_env.bat.

No arquivo, configure um das seguintes variáveis: IDB_CLASSES, ORACLE_CLASSES, POSTGRE_CLASSES or INTERBASE_CLASSES com o valor apropriado para a instalação do seu banco de dados.

Exemplo com MYSQL:
Set MYSQL_CLASSES=C:\mysql\lib\mysql-connector-java-3.0.7-stable-bin.jar

NOTA: Sem a execução deste passo não será possível executar os exemplos contidos neste guia que usam banco de dados.
Lembre-se que o arquivo .jar com o drive tem que está no diretório configurado!

Criando e configurando a conexão com o Banco de Dados

Para criar um pool de conexões com o banco de dados o adminitrador jonas deve seguir os seguintes passo:

  1. Abrir o prompt do MS-DOS; Iniciar o servidor de aplicação: jonas start
    (Ou se preferir, no windows, use o atalho Iniciar » Programas » JOnAs - <nomeDoWebContaner>» Start JOnAS (Foreground).)
  2. Abrir o browser para acessar a página de administração do JOnAS em: http://localhost:8080/jonasAdmin (fornecer login=jonas /senha=jonas)
  3. No frame à esquerda, contendo a árvore do JOnAS Server, clicar na ramificação Resources » Database(JDBC)
  4. No frame à direita, selecionar a pasta DataSource
  5. clicar no botão New datasource
  6. Prencher o cadastro de criação de um novo Objeto DataSource; a tabela abaixo descreve o significado de cada campo:

  7. Datasource
    Campo Descrição
    Name Nome externo do DataSource
    JNDI name Nome JNDI do DataSource
    Description Descrição da fonte da dados
    URL A URL para acesso JDBC do banco de dados: jdbc:<database_vendor_subprotocol>:...
    JDBC Driver Nome da classe que implementa o driver JDBC
    User name Nome do usuário de banco de dados 
    User password Senha do usuário de banco de dados 
    Mapper Mapeador usado nesta fonte de dados (necessário apenas para CMP 2.0)
    JDBC
    Maximum age valor inteiro de minutos que a conexão física permanecerá aberta quando inativa.
    Checking level Nível de checagem de conexão JDBC:
    0 = sem checagem
    1 = checar antes de usar se a conexão física permanece aberta
    2 = testar toda conexão antes de usar
    Test Comando SQL para ser executado no teste
    Pool minimum Menor tamanho do pool de conexão
    Ao iniciar o JOnAS mesmo que não seja necessário será criado este número de conexões.
    Pool maximum Maior tamanho do pool de conexão. (-1 = sem limite)
    Para consultar exemplos de preenchimento destes campos você pode ir para a seção exemplos logo abaixo.
  8. Clique no botão apply para submenter o cadastro do novo datasource.
  9. Será exibida então a lista de datasources. Se isto ocorrer é sinal que foi possível iniciar a conexão com o banco de dados e esta já está disponível para uso.
    Caso isto não ocorra, verifique os seguinte itens:

NOTA IMPORTANTE: Os datasources ficam indisponíveis a cada vez que o servidor é encerrado e re-iniciado.
Para torná-lo disponível/indiponível use os botões da pasta Deployments acionada a partir da ramificação Resources » Database(JDBC).
Para tornar estas conexões permanentes, e não ser necessários refazer estes passos a cada inicialização, você deve configurar a seção jonas.service.dbm.datasources do arquivo %JONAS_ROOT%\conf\jonas.properties.
veja um exemplo:
jonas.service.dbm.datasources mysqlVendas

Exemplos

Exemplo com o Banco de dados MySQL

Para criar um objeto DataSource identificado no JOnAS como teste_db_jonas e jdbc_teste no JNDI, acessando o banco de dados local MySQL de nome db_jonas preencha-o como segue:

 
Datasource configuration
Name  teste_db_jonas
JNDI name  jdbc_teste
Description  Conexão para teste de exemplo( db_jonas)
URL  jdbc:mysql://localhost/db_jonas
JDBC Driver  com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
User name  teste
User password  testepwd
Mapper 
 
JDBC connection configuration
Maximum age  30 (isto indica que conexões com mais de 30 minutos inativas serão fechadas)
Checking level  1 (para checar antes de usar se a conexão física está aberta)
Test  SELECT 1 (valor default, comando Sql usado no teste de conexão do banco.)
Pool minimum  5 (Isto indica que será criado 5 conexões física ao inciar o JOnAS)
Pool maximum  10 (Isto indica que o número de conexões pode aumentar até 10, caso seja necessário)

Exemplo com o Banco de dados Oracle

Um objeto DataSource para Oracle (por exemplo, Oracle1), chamado jdbc_1 no JNDI, e usando o Oracle thin JDBC driver, poderia ser configurado como no seguinte exemplo:

 
Datasource configuration
Name  Oracle1
JNDI name  jdbc_1
Description  Conexão para teste DB Oracle
URL  jdbc:oracle:thin:@malte:1521:ORA1
JDBC Driver  oracle.jdbc.driver.OracleDriver
User name  scott
User password  tiger
Mapper 

Neste exemplo, "malte" é um hostname de um servidor executando um SGBD Oracle, 1521 é o número da porta SQL*Net V2 neste servidor, e ORA1 é o ORACLE_SID.

Este exemplo faz uso do Oracle thin JDBC driver. Se seu servidor de aplicação está executando no mesmo host como SGBD Oracle, você pode usar o Oracle OCI JDBC driver; dependendo da versão do Oracle, a URL para usar isto poderia ser jdbc:oracle:oci7, ou jdbc:oracle:oci8. Os drivers JDBC para Oracle podem ser baixados do site da Oracle.

A cada vez que se configura um novo objeto datasource é criado automaticamente uma arquivo para guardar estas configurações. Neste exemplo o arquivo ficaria com o nome Oracle1.properties e seria armazenado do diretório $JONAS_ROOT/conf. O arquivo teria o seguinte conteúdo:

datasource.name       jdbc_1
datasource.url        jdbc:oracle:thin:@malte:1521:ORA1
datasource.classname  oracle.jdbc.driver.OracleDriver
datasource.username   scott
datasource.password   tiger
    
O contrário também pode ser feito, o Administrador do JOnAS pode diretamente criar o arquivo no diretório $JONAS_ROOT/conf que o servidor JOnAS irá reconhecê-lo criando a fonte de dados ao ser iniciado.

Exemplo com o Banco de dados InstantDB

Para criar um objeto DataSource InstantDB (por exemplo, InstantDB1) chamado jdbc_2 no JNDI, descreva-o como segue (em um arquivo InstantDB1.properties):

datasource.name       jdbc_2
datasource.url        jdbc:idb=db1.prp
datasource.classname  jdbc.idbDriver
datasource.username   useless
datasource.password   useless
    

Exemplo com o Banco de dados PostGreSQL

Para criar um objeto DataSource PostGreSQL chamado jdbc_3 in JNDI, no JNDI, descreva-o como segue (em um arquivo PostGreSQL.properties):

datasource.name       jdbc_3
datasource.url        jdbc:postgresql://your_host/your_db
datasource.classname  org.postgresql.Driver
datasource.username   useless
datasource.password   useless