1. Introduction

L' iSeries est un ordinateur IBM utilisant un système d'exploitation propriétaire, l' OS400 (i5/OS V5R3 pour la toute dernière mouture de cet OS) mais aussi Linux, unix (AIX) ou encore Windows pour les tout derniers serveurs IBM eServer i5. Ces derniers sont, en effet, capables de faire cohabiter plusieurs systèmes d'exploitation différents dans des systèmes virtuels hébergés dans un seul et unique serveur (voir le lien précédent pour plus d'informations).

La base de données utilisée sur l' iSeries est une version de la base de données DB2 UDB.

Bien que l'iSeries ou AS400 ne soit pas souvent cité ou connu, cet ordinateur est présent dans nombre d'entreprises de taille moyennes à grosses et tout informaticien peut donc être confronté à devoir un jour, au cours de sa carrière, exploiter les données stockées sur un tel système.

Dans le cadre de ce tutoriel, nous allons donc supposer que nous avons la charge de mettre en place un serveur d'application JBoss sur lequel une application J2EE exploitera des données stockées dans un eServer i5 sous système d'exploitation OS400 et avec donc DB2400 UDB comme SGBD. La version de JBoss utilisée dans ce tutoriel est la version 3.23.

2. Configuration

Le décor étant planté
, entrons dans le vif du sujet : La liaison de Jboss avec une base de données est effectuée grâce à plusieurs fichiers XML. Ces fichiers XML sont situés dans les répertoires ..\jboss-3.2.3\server\all\conf, ..\jboss-3.2.3\server\default\conf et ..\jboss-3.2.3\server\minimal\conf. (chacun de ces 3 répertoires correspond à une version plus ou moins complète du serveur JBoss).

Dans ces répertoires, le fichier suivant va nous intéresser : standardjbosscmp-jdbc.xml

Tout d'abord nous allons effectuer une copie de ce fichier avant modification. Ensuite, nous allons l'ouvrir avec un éditeur de texte. En voici le début :

standardjbosscmp-jdbc.xml
Sélectionnez

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC
   "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN"
   "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd">
<!-- ===================================================================== -->
<!--                                                                       -->
<!--  Standard JBossCMP-JDBC Configuration                                 -->
<!--                                                                       -->
<!-- ===================================================================== -->
<!-- $Id: standardjbosscmp-jdbc.xml,v 1.39.2.34 2003/11/25 01:48:16 ejort Exp $ -->
<jbosscmp-jdbc>
   <defaults>
      <datasource>java:/DefaultDS</datasource>
      <datasource-mapping>Hypersonic SQL</datasource-mapping>
      <create-table>true</create-table>
etc...
        

Dans le code XML précédent, nous allons modifier les lignes <datasource> et <datasource-mapping>. En effet, par défaut, Jboss est configuré pour fonctionner avec la base de données « Hypersonnic »
. Nous allons remplacer le nom de la source de données java:/DefaultDS par java:/DB2400
De la même façon, nous allons remplacer le « type-mapping » Hypersonic SQL par DB2/400
. En effet, si nous descendons plus bas dans le source XML, nous verrons que le type de mapping DB2/400 est dé
fini pour JBOSS 3.2.3.

standardjbosscmp-jdbc.xml
Sélectionnez

...
<type-mapping-definition>
       <name>DB2/400</name>
       <mapping>
          <java-type>java.lang.Character</java-type>
          <jdbc-type>CHAR</jdbc-type>
          <sql-type>CHAR(1)</sql-type>
       </mapping>
       <mapping>
          <java-type>java.lang.String</java-type>
          <jdbc-type>VARCHAR</jdbc-type>
          <sql-type>VARCHAR(256)</sql-type>
       </mapping>
       <!-- Apparent DB2/400 doesn't handle Byte type either
      <mapping>
      <java-type>java.lang.Byte</java-type>
      <jdbc-type>CHAR</jdbc-type>
      <sql-type>CHAR(1) FOR BIT DATA</sql-type>
      </mapping>
       -->
      

Au final, le début de notre fichier XML doit contenir :

standardjbosscmp-jdbc.xml
Sélectionnez

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC
   "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN"
   "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd">
<!-- ===================================================================== -->
<!--                                                                       -->
<!--  Standard JBossCMP-JDBC Configuration                                 -->
<!--                                                                       -->
<!-- ===================================================================== -->
<!-- $Id: standardjbosscmp-jdbc.xml,v 1.39.2.34 2003/11/25 01:48:16 ejort Exp $ -->
<jbosscmp-jdbc>
   <defaults>
      <datasource>java:/DB2400DS</datasource>
      <datasource-mapping>DB2/400</datasource-mapping>
      <create-table>true</create-table>
      <remove-table>false</remove-table>
      <read-only>false</read-only>
      <read-time-out>300000</read-time-out>
      <row-lockinq
etc...
      

3. Déploiement


Enregistrons notre fichier. Nous allons maintenant répercuter ces modifications dans tous les autres répertoires « server » de JBoss:

 
Sélectionnez

\jboss-3.2.3\server\all
\jboss-3.2.3\server\Default
\jboss-3.2.3\server\Minimal
        

En copiant nos 2 fichiers modifiés respectivement dans les répertoires \conf de chacun des répertoires cités ci dessus.

Passons à présent à la définition de la source de donné
es. Pour utiliser DB2 400 avec JBoss, nous devons disposer de la bibliothèque des classes IBM qui permet d'établir une connexion avec l'As400 à l'aide d'un driver JDBC.

Dans notre cas, nous utiliserons la version open source d'IBM jtopen4.3 disponible à l'adresse suivante : http://www-124.ibm.com/developerworks/oss/jt400/
Une fois la toolbox d'Ibm installée, nous allons trouver dans le sous répertoire lib l'archive jt400.jar
. Cette archive devra être copiée dans les 3 répertoires serveur de JBoss suivant:

 
Sélectionnez
 \jboss-3.2.3\server\all\lib 
\jboss-3.2.3\server\Default\lib \jboss-3.2.3\server\Minimal\lib 

A présent, nous faut allons créer le fichier XML qui va définir la source de données DB2400DS que nous avons référencée au début de ce tutorial dans nos fichiers XML..

Pour faire cela, nous allons copier le fichier db2-ds.xml présent dans le répertoire \jboss-3.2.3\docs\examples\jca vers le répertoire server\all\deploy
. Puis, nous allons renommer ce fichier en db2400-ds.xml et enfin l'ouvrir avec un éditeur de texte

db2400-ds.xml
Sélectionnez
 
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== 
--> <!-- --> <!-- JBoss Server Configuration --> <!-- --> <!-- ===================================================================== 
--> <!-- $Id: db2-ds.xml,v 1.1.2.1 2003/09/05 16:38:24 patriot1burke Exp $ --> 
<datasources> <local-tx-datasource> <jndi-name>DB2DS</jndi-name> <connection-url>jdbc:db2:yourdatabase</connection-url> 
<driver-class>COM.ibm.db2.jdbc.app.DB2Driver</driver-class> <user-name>x</user-name> 
<password>y</password> <min-pool-size>0</min-pool-size> <!-- sql to call when 
connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> 
--> <!-- sql to call on an existing pooled connection when it is obtained from 
pool <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> 
--> </local-tx-datasource> </datasources> 

A présent on en modifie le contenu de la façon suivante :

db2400-ds.xml
Sélectionnez
 
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== 
--> <!-- --> <!-- JBoss Server Configuration --> <!-- --> <!-- ===================================================================== 
--> <!-- $Id: db2400-ds.xml,v 1.1.2.1 2003/09/05 16:38:24 patriot1burke Exp $ 
--> <datasources> <local-tx-datasource> <jndi-name>DB2400DS</jndi-name> <connection-url>jdbc:as400//yourdatabase</connection-url> 
<driver-class>com.ibm.as400.access.JDBCDriver</driver-class> <user-name>x</user-name> 
<password>y</password> <min-pool-size>0</min-pool-size> <!-- sql to call when 
connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> 
--> <!-- sql to call on an existing pooled connection when it is obtained from 
pool <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> 
--> </local-tx-datasource> </datasources> 

L'url de connexion est de la forme jdbc:as400//yourdatabase, yourdatabase etant l'adresse Ip de votre système ou son nom d'hô
te. Attention de bien respecter la casse pour la définition de la classe du driver JDBC.

L'utilisateur et le mot de passe peuvent être laissé à blanc. Dans ce cas nous les passerons au système lors de l'é
tablissement de la connexion. Enregistrez votre fichier modifié et copiez le dans les 2 autres répertoires server\default\deploy et server\minimal\deploy

Voilà, Jboss est maintenant prêt pour communiquer avec un as400 et nous verrons comment, dans un prochain article, en écrivant un EJB session chargé de vérifier l'enregistrement d'un utilisateur dans une base de donné
e DB2 UDB pour iSeries.

Image non disponible
à suivre...