IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

J2EE: Configurer JBoss pour DB2400

12/06/2004

Par Olivier Constans (autres articles)
 

niveau : facile

durée : 5 minutes

L'objet de ce tutoriel est de configurer un serveur d'application Jboss afin de pouvoir écrire des applications qui soient en mesure d'interagir avec une base de données DB2 UDB pour iSeries (AS400).


1. Introduction
2. Configuration
3. Déploiement


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
<?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
... <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
<?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:

\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:

\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
<?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
<?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.

à suivre...



Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.