1.2. fejezet, Adatbázis konfiguráció

Kitömörítés után az első adminisztrációs feladatunk az adatbázis szerver JDBC meghajtójának regisztrálása. Telepítsünk mintapéldányként egy MySQL J/Connector-t. Hozzuk létre a JBoss telepítés [JBOSS]/modules/com/mysql/main könyvtárakat. Másoljuk a mysql-connector-java-5.1.21-bin.jar fájlt a main könyvtárba, majd készítsünk egy modul leíró xml fáljt (module.xml):

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-java-5.1.21-bin.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
  </dependencies>
</module>

Készítsük fel a JBoss-t, hogy a modult adatbázis kapcsolat kezelésre fogjuk használni. A standalone/configuration/standalone.xml-be illesszük be az alábbi sorokat a server > profile > subsystem xmlns="urn:jboss:domain:datasources:1.0" > datasources > drivers ágába (module="com.h2database.h2" után):

  <driver name="com.mysql" module="com.mysql">
    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
  </driver>

Ugyanez PostgreSQL-el: másoljuk a jar fájlt az [JBOSS]/modules/org/postgresql/main könyvtárba. A leíró module.xml tartalma:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
  <resources>
    <resource-root path="postgresql-9.1-902.jdbc4.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
  </dependencies>
</module>

standalone.xml-be illesszük be a modult:

<driver name="org.postgresql" module="org.postgresql">
  <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>

Ez után indítsuk el a JBoss szerverünket, majd lépjünk be az adminisztrációs felületre (http://localhost:9990/console/App.html), és a Profile oldalon, Connector / Datasources menüben hozzunk létre egy adatforrás kezelőt. Ha elkészültünk, engedélyeznünk kell az adatforrást, és már használhatjuk is.

Készíthetünk a programhoz szorosabban kapcsolódó adatforrást is, ha a WEB-INF könyvtárba például az alábbi ArchiWar-ds.xml fájlt definiáljuk:

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
 <datasource jndi-name="java:jboss/datasources/ArchiWarPostgreSQL" enabled="true" 
     use-java-context="true" pool-name="ArchiWarPostgreSQL">
  <connection-url>jdbc:postgresql:archiwar</connection-url>
  <driver>org.postgresql</driver>
  <pool></pool>
  <security>
   <user-name>uname</user-name>
   <password>password</password>
  </security>
 </datasource>
</datasources>

Itt látható, hogy az adatforrás meghajtója az org.posthresql, a jndi neve pedig java:jboss/datasources/ArchiWarPostgreSQL

Hibernate.cfg.xml-be az adatforrásra így hivatkozhatunk:

...
<property name="connection.datasource">java:jboss/datasources/ArchiWarPostgreSQL</property>
...

MySQL-nél ne felejtsük átállítani a tranzakció kezelését:

  <datasource jta="true" jndi-name="java:jboss/jdbc/kepeslap_ds__my" pool-name="kepeslap" enabled="true" use-ccm="false">
  ...
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
  ...
  </datasource>

Beállítás lekérdezése konzolon:

SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

my.conf:

[mysqld]
transaction-isolation = READ-COMMITTED

vagy konzolon:

SET GLOBAL tx_isolation='READ-COMMITTED';
SET SESSION tx_isolation='READ-COMMITTED';
vagy.
SET TRANSACTION isolation level READ committed;

Ez segít abban, hogy egy olvasó és egy író session között egy commit szinkronizálja a már kiírt adatokat, és az ablak Primefaces AJAX újrafrissítése már a kiírt adatokat olvassa vissza mondjuk egy táblázatba. Ha ezt nem állítjuk be, előfordulhat, hogy a régi értékeket kapjuk vissza a táblázatba, vagy egy rekord törlése csak akkor látszik, ha újratöltjük a böngésző ablakot.