Como criar recursos JDBC/Glassfish direto na aplicação web Java


Referência: http://javahowto.blogspot.com.br/2011/02/sample-glassfish-resourcesxml.html

As configurações a seguir farão com que os recursos JDBC demandados pela aplicação web/java sejam criados no momento do deploy, ou seja, não será necessário configurar os recursos manualmente no console do Glassfish, desta forma os recursos estarão no escopo da aplicação.

Crie um arquivo nomeando-o:
glassfish-resources.xml
Nota: Este arquivo deve estar na pasta WEB-INF da aplicação.

Exemplo de configuração não transacional para MySql

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<jdbc-connection-pool
    connection-validation-method="auto-commit"
    datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
    wrap-jdbc-objects="false" res-type="javax.sql.DataSource" name="myJdbcPoolName"
    non-transactional-connections="true">
    
    <property name="URL" value="jdbc:mysql://myDatabaseServerName:3306/myDatabaseName"></property>
    <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    <property name="Password" value="12345"></property>
    <property name="portNumber" value="3306"></property>
    <property name="databaseName" value="myDatabaseName"></property>
    <property name="User" value="myDatabaseUser"></property>
    <property name="serverName" value="myDatabaseServerName"></property>
</jdbc-connection-pool/>

<jdbc-resource enabled="true" pool-name="myJdbcPoolName" jndi-name="jdbc/myJdbcResourceName" />

Exemplo de configuração não transacional para MSSQL Server

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<jdbc-connection-pool 
    max-pool-size="8" 
    datasource-classname="com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource" 
    res-type="javax.sql.ConnectionPoolDataSource" name="myJdbcPoolName" 
    non-transactional-connections="true">
     
    <property name="DatabaseName" value="myDatabaseName"></property>
    <property name="ApplicationName" value="Microsoft SQL Server JDBC Driver"></property>
    <property name="User" value="myDatabaseUser"></property>
    <property name="LockTimeout" value="-1"></property>
    <property name="Password" value="12345"></property>
    <property name="SendTimeAsDatetime" value="true"></property>
    <property name="PacketSize" value="8000"></property>
    <property name="SendStringParametersAsUnicode" value="true"></property>
    <property name="ServerName" value="myDatabaseServerName"></property>
    <property name="XopenStates" value="false"></property>
    <property name="TrustServerCertificate" value="false"></property>
    <property name="PortNumber" value="1433"></property>
    <property name="URL" value="jdbc:sqlserver://"></property>
    <property name="LoginTimeout" value="15"></property>
    <property name="ResponseBuffering" value="adaptive"></property>
    <property name="SelectMethod" value="direct"></property>
    <property name="LastUpdateCount" value="true"></property>
    <property name="Encrypt" value="false"></property>
</jdbc-connection-pool>

<jdbc-resource pool-name="myJdbcPoolName" jndi-name="jdbc/myJdbcResourceName" />

Para tornar a conexão transacional basta retirar a sentença:
non-transactional-connections="true"
O resource deve ser chamado no persistence.xml desta forma
java:app/jdbc/myJdbcResourceName


Outra forma de configurar os recursos no Glassfish: utilizar o arquivo glassfish-resources.xml direto na linha de comando do servidor

Para adicionar os recursos ao Glassfish
$ asadmin add-resources $HOME/glassfish-resources.xml
Para deletar os recursos
$ asadmin delete-jdbc-connection-pool --cascade true jdbc/test-pool