L’important est d’établir le bon environnement. J’aimerais démontrer comment vous pouvez accéder aux données de Microsoft SQL Server à partir de votre System i5 en utilisant JDBC et invoquer le programme Java à partir d’un programme CL.
C’est aussi simple que d’utiliser tout autre driver JDBC pour accéder aux données, mais il faut dans ce cas établir le bon environnement sur votre System i5.
L’exemple que je démontre ici demande deux drivers JDBC :
- l’un pour accéder au System i5
- et l’autre pour accéder au MS SQL Server.
Le plus souvent, le IBM Developer Kit for Java, qui fournit le driver JDBC natif, sera déjà installé sur votre système.
Remarque: Pour utiliser cette technique, il faut que Java Developer Kit 1.4 ou version ultérieure soit déjà installé sur le System i5. Ou bien, vous pouvez utiliser le driver IBM Toolbox for Java JDBC.
Pour comprendre les différences entre ces deux drivers JDBC, reportez-vous à la documentation d’IBM. Les classes centrales pour le driver JDBC natif IBM sont dans db2_classes.jar. Pour télécharger l’exemple de code qui accompagne cet article, allez sur iTPro.fr Club abonnés.
Préparez-vous
Pour accéder à la base de données MS SQL Server, il faut télécharger le driver JDBC depuis le site Web de Microsoft et l’installer sur votre IFS.
Vous pouvez mapper un lecteur réseau pour transférer facilement les fichiers entre votre IFS et votre environnement Windows.
Les classes centrales pour le driver JDBC SQL Server 2005 type 4 se trouvent dans sqljdbc.jar.
Les précédentes versions de SQL Server utilisaient un ensemble différent de fichiers .jar.
Vous pouvez utiliser sqljdbc.jar avec SQL Server 2000 et 2005.
Consultez le site Web de Microsoft pour savoir quel driver JDBC il faut télécharger si vous n’utilisez pas SQL Server 2000 ou SQL Server 2005. Vous devez sauvegarder les fichiers sqljdbc.jar vers le répertoire d’extension Java UserData /QIBM/UserData/Java400/ext afin de pouvoir trouver les classes et les interfaces quand votre code Java s’exécute.
De même, pour que le driver JDBC natif IBM soit disponible à l’exécution, un lien symbolique doit exister pour db2_classes.jar dans QIBM/UserData/Java400/ ext qui pointe vers le fichier /QIBM/ProdData/Java400/ ext/db2_classes.jar.
Pour vérifier que le lien symbolique existe et pointe vers le bon objet, entrez la commande suivante : WRKLNK OBJ(‘/QIBM/UserData/ java400/ext/*’) DETAIL(*EXTENDED) DSPOPT(*ALL). Sélectionnez l’option 12 (Work with Links) sur le db2_classes.jar et vérifiez qu’elle a bien le contenu de lien suivant : /qibm/proddata/ os400/ext/db2_classes.jar.
Si le lien est absent ou incorrect, vous pouvez le créer par la commande suivante : ADDLNK OBJ(‘/QIBM/ProdData/ OS400/Java400/ext/ db2_classes.jar’) NEWLNK(‘/QIBM/UserData/ java400/ext/ db2_classes.jar’)
Exécuter votre code
L’environnement adéquat est maintenant en place.
Normalement, j’utilise IBM Rational pour coder mes programmes Java, les tester sur mon portable puis les exporter vers mon System i5.
Si IBM Rational n’est pas installé, vous pouvez utiliser n’importe quel éditeur de texte pour modifier le programme Java exemple GetMSSQL Data.java et le sauvegarder dans votre répertoire home dans l’IFS.
Ou bien, si vous n’avez pas un lecteur mappé, vous pouvez envoyer par FTP le fichier à l’IFS.
Dès lors que votre code source Java est présent sur IFS, démarrez une session QShell (STRQSH) sur votre System i5, allez au répertoire où vous avez sauvegardé le code source et tapez cette commande : Javac GetMSSQLData.java.
Si vous n’obtenez pas de message d’erreur et s’il y a une invite $ sur votre session QShell, c’est que votre programme s’est bien compilé. Vous pouvez donc exécuter votre code Java à partir du QShell en tapant «Java GetMSSQLData».
Si vous exécutez le code sur V5R3, vous devez utiliser le CCSID (Coded Character Set Identifier) correct pour initialiser le driver JDBC natif IBM. Il en est ainsi parce que le JDBC natif pour le System i5 a changé dans la V5R3 et exige que le CCSID du job exécutant le JDBC soit réglé sur autre chose que 65535 pour utiliser le driver JDBC.
Par conséquent, utilisez la commande CHGJOB pour changer le job afin d’utiliser un CCSID 37 plutôt que 65535. Si vous utilisez CCSID 65535 et essayez d’exécuter votre code Java, vous obtiendrez le message d’erreur suivant : Message: INTERNAL ERROR: Creation of DB2Driver object for registering with DriverManager failed. (Message : ERREUR INTERNE : La création de l’objet DB2Driver pour enregistrer avec DriverManager a échoué.)
GETMSSQL.CLLE (figure 1) est un programme CL qui montre comment vous pouvez appeler le programme Java à partir d’un programme CL. C’est un programme CL simple qui change le JOB CCSID en 37, puis change le répertoire en fonction de l’endroit où la classe Java réside, puis utilise la commande RUNJVA pour exécuter le programme Java.
Vous pouvez aussi passer des paramètres à votre programme Java et spécifier le CLASSPATH pour l’environnement runtime de votre programme Java en utilisant la commande RUNJVA. (Pour plus de détails sur la commande RUNJVA, voir la documentation IBM.) Dès lors que vous pouvez appeler votre programme Java à partir d’un programme CL, vous pouvez l’exécuter comme un job batch ou interactif.
Etapes de la démonstration
Pour utiliser GetMSSQLData.java :
1. Sauvegardez les fichiers GetMSSQLData.java et Data.txt (figure 2) dans le même répertoire de l’IFS.
2. Ouvrez le fichier GetMSSQLData.java dans Notepad ou dans un autre éditeur de votre choix.
3. Si vous vous référez à la base de données locale sur votre System i5, il n’est pas nécessaire de changer la chaîne de connexion (url1) pour le System i5. Mais vous devez fournir un ID et mot de passe utilisateur valides dans l’objet Properties pour le driver JDBC natif IBM.
4. Changez la chaîne de connexion pour votre MSSQL Server avec le nom du serveur (ou adresse IP), nom de la base de données, ID utilisateur, et mot de passe.
5. Pendant que vous créez et peuplez les tables sur le System i5 et sur MSSQL Server, assurez-vous que vous disposez de l’autorité requise sur la bibliothèque System i5 et sur la base de données MSSQL Server.
6. Remplacez toutes les occurrences de MYLIB par le nom de bibliothèque pour i5, et remplacez toutes les occurrences de MydataBase par le nom de base de données de votre SQL Server.
7. Sauvegardez et comstackz le programme GetMSSQL Data.java comme décrit précédemment.
8. Chargez le source pour le programme GETMS SQL.CLLE vers un fichier source et utilisez la commande CRTBNDCL pour créer le programme CLLE.
9. Appelez le programme GETMSSQL.CLLE et vérifiez que la table CUSTOMER est créée et peuplée à la fois sur le MS SQL Server et le System i5.
10. Vous pouvez exécuter le programme aussi souvent que nécessaire. La fois suivante, il ne recréera pas les tables, mais il dupliquera les entrées.
Téléchargez cette ressource
Livre blanc Sécurité et Stockage des documents
Découvrez dans ce livre blanc Kyocera les outils logiciels qui permettent une approche holistique et efficace de la collecte, du stockage, de la gestion et de la sécurisation des documents en entreprise.