Configurare un pool di connessione al database sembra una operazione semplice, ma si può finire per sprecare un sacco di tempo prezioso...
nel mio caso : postgresql-9.3-1102.jdbc41.jar
per poter creare il pool dobbiamo creare prima un modulo per il driver:
cartellawildfly/modules/org/postgres/main/
in questa cartella copiamo il file postgresql-xxxxx.jdbc41.jar e creiamo un file di nome module.xml
il file module.xml avrà il seguente contenuto :
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.postgres">
<resources>
<resource-root path="postgresql-9.3-1102.jdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
una volta fatto questo abbiamo dato a wildfly le informazioni necessarie sul driver.
cartellawildfly/standalone/configuration/standalone.xml
aprendo il file con un editor di testo andiamo a cercare il punto dove sono contenute le info sui datasource, per l'esattezza i tag <datasources></datasources> li delimitano.
quindi al loro interno potremmo incollare un descrittore simile a questo :
<datasource jta="true" jndi-name="java:jboss/PostgresDSPool" pool-name="PostgresDSPool" enabled="true" use-ccm="false">
<connection-url>jdbc:postgresql://localhost/postgresdb</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgres</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>postgresus</user-name>
<password>postgrespwd</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="postgres" module="org.postgres">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
</drivers>
Cercare inoltre il default-bindings se si è rimosso il contenuto del datasource di default e modificarlo come segue :
<default-bindings context-service="java:jboss/ee/concurrency/context/default"
datasource="java:jboss/PostgresDSPool"
managed-executor-service="java:jboss/ee/concurrency/executor/default"
managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default"
managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
dove i parametri da settare a proprio piacimento sono :
nome del datasource : java:jboss/PostgresDSPool
nome dell'host del server o ip del db : localhost
nome del database : postgresdb
nome utente : postgresus
password utente : postgrespwd
a questo punto possiamo riavviare wildfly ed andare a testare la connessione:
per accedere al pannello di amministrazione, ammesso che il server sia su localhost :
http://localhost:9990/console
se non accede esce un messaggio che vi indica le modalità di creazione di un utente.
sulla sinistra : connector -> datasources
selezionate la riga postgresdspool, in basso connection e quindi test.
se la connessione non riesce andate a leggere i log per capire se avete sbagliato l'utente (postgresus) la password ( nell'esempio è postgrespwd ) o il database ( postgresdb ) o altro.
Preparazione :
scaricare il driver jdbc del database:nel mio caso : postgresql-9.3-1102.jdbc41.jar
per poter creare il pool dobbiamo creare prima un modulo per il driver:
Modulo :
sotto la cartella principale di wildfly creare il seguente percorso :cartellawildfly/modules/org/postgres/main/
in questa cartella copiamo il file postgresql-xxxxx.jdbc41.jar e creiamo un file di nome module.xml
il file module.xml avrà il seguente contenuto :
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="org.postgres">
<resources>
<resource-root path="postgresql-9.3-1102.jdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
una volta fatto questo abbiamo dato a wildfly le informazioni necessarie sul driver.
Datasource :
a questo punto andiamo a modificare un altro file per aggiungere il pool:cartellawildfly/standalone/configuration/standalone.xml
aprendo il file con un editor di testo andiamo a cercare il punto dove sono contenute le info sui datasource, per l'esattezza i tag <datasources></datasources> li delimitano.
quindi al loro interno potremmo incollare un descrittore simile a questo :
<datasource jta="true" jndi-name="java:jboss/PostgresDSPool" pool-name="PostgresDSPool" enabled="true" use-ccm="false">
<connection-url>jdbc:postgresql://localhost/postgresdb</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgres</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>postgresus</user-name>
<password>postgrespwd</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="postgres" module="org.postgres">
<driver-class>org.postgresql.Driver</driver-class>
</driver>
</drivers>
Cercare inoltre il default-bindings se si è rimosso il contenuto del datasource di default e modificarlo come segue :
<default-bindings context-service="java:jboss/ee/concurrency/context/default"
datasource="java:jboss/PostgresDSPool"
managed-executor-service="java:jboss/ee/concurrency/executor/default"
managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default"
managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
dove i parametri da settare a proprio piacimento sono :
nome del datasource : java:jboss/PostgresDSPool
nome dell'host del server o ip del db : localhost
nome del database : postgresdb
nome utente : postgresus
password utente : postgrespwd
a questo punto possiamo riavviare wildfly ed andare a testare la connessione:
per accedere al pannello di amministrazione, ammesso che il server sia su localhost :
http://localhost:9990/console
se non accede esce un messaggio che vi indica le modalità di creazione di un utente.
sulla sinistra : connector -> datasources
selezionate la riga postgresdspool, in basso connection e quindi test.
se la connessione non riesce andate a leggere i log per capire se avete sbagliato l'utente (postgresus) la password ( nell'esempio è postgrespwd ) o il database ( postgresdb ) o altro.
What can I do to setup a xa-datasource?
RispondiElimina