Jboss as7 si stacca completamente dalla tradizione Red Hat, che voleva server monolitici e che comprendessero qualsiasi cosa, con il problema, non da poco, di essere anche molto lenti. In questo caso gli sviluppatori si sono voluti concentrare su modularità e velocità, pur mantenendo uno stack java ee 6 completo.
Questo per fare una piccola introduzione, altre info qui:
http://www.jboss.org/as7 dove è anche possibile scaricare l'application server e trovare la documentazione completa.
La configurazione in jboss as 7 è demandata ad un solo file, nel nostro esempio useremo la modalita standalone, ma lo stesso metodo potrebbe anche essere applicato alla domain. Il file in questione è: $JBOSS_HOME/standalone/configuration/standalone.xml.
Prima di andare a definire il nostro datasource, però, bisogna installare i driver jdbc del dbms che ci interessa, in questo caso mysql. I driver in questione verranno installati come modulo dell'application server, anche se ci sono offerte altre possibilità (come si può vedere in una panoramica più ampia
qui). Questa modalità non è consigliata nel caso si stia gestendo un dominio, per quello è consigliato il deploy diretto dei driver (che devono essere jdbc-4 compliant, anche se c'è un metodo per renderli tali) tramite cli o web console.
Prendiamo il file mysql-connector-java-5.1.18-bin.jar (o la versione che si desidera, ricordandosi di referenziarla correttamente nel module.xml) che possiamo scaricare
qui e copiamolo nella cartella: $JBOSS_HOME/modules/com/mysql/jdbc/main, se non esiste va creata.
A questo punto va creato il file module.xml, nella stessa cartella dove abbiamo copiato i driver. Il file dovrà essere come di seguito:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql.jdbc">
<resources>
<resource-root path="mysql-connector-java-5.1.18-bin.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
Fatto ciò resta l'ultimo passo da fare: definire il datasource vero e proprio. Questo si deve fare nel file standalone.xml. Qui sotto la parte relativa alla configurazione definita nel sottosistema realtivo ai ds:
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<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>
</datasource>
<datasource jndi-name="java:jboss/datasources/exampleDS" pool-name="waauDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:mysql://localhost:3306/example
</connection-url>
<driver>
mysql
</driver>
<transaction-isolation>
TRANSACTION_READ_COMMITTED
</transaction-isolation>
<pool>
<min-pool-size>
10
</min-pool-size>
<max-pool-size>
100
</max-pool-size>
<prefill>
true
</prefill>
<use-strict-min>
false
</use-strict-min>
<flush-strategy>
FailingConnectionOnly
</flush-strategy>
</pool>
<security>
<user-name>
user
</user-name>
<password>
password
</password>
</security>
<statement>
<prepared-statement-cache-size>
32
</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>
org.h2.jdbcx.JdbcDataSource
</xa-datasource-class>
</driver>
<driver name="mysql" module="com.mysql.jdbc">
<xa-datasource-class>
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
Le parti relativa ad exampleDS e ai driver mysql sono quelle da aggiungere alla configurazione di base del file, ricordandosi di sostituire user e password con i dati relativi all'account e l'host con quello dove risiede il db. Ovviamente in base alle esigenze si può fare tutto il tuning desiderato cambiando i vari parametri, ma per quello vi rimando alla documentazione ufficiale.