Bonjour à tous !
Je me tourne vers vous suite à un problème que je n'arrive pas du tout à résoudre...
Je migre actuellement une application qui tournait sur du Jonas 4.9 et qui tournera à terme sur du Jonas 5.2.4.
L'application utilisait déjà teradata, j'ai donc voulu réutiliser le même driver JDBC que j'ai récupérer de l'ancien vers le nouveau serveur.
Les librairies terajdbc4.jar et tdgssconfig.jar ont été copiées dans le JONAS_BASE/lib/ext, mon fichier jonas.properties a bien la propriété jonas.service.dbm.datasources renseigné et le fichier datasource a également été récupéré de l'ancien serveur (toutes les données de connexion sont donc OK). Résultat : Impossible de démarrer, j'ai l'erreur suivante :
Après de nombreuses recherches, beaucoup de personnes qui ont ce problème parlent d'ajouter le fichier tdgssconfig.jar dans le classpath de jonas. Or après quelques recherches, le répertoire lib/ext est bien pris en compte par le classloader, et je vois bien dans les logs de démarrage Jonas que cette librairie est bien prise en compte.2015-01-28 10:47:28,391 : JOnASResourceService.__doStart : Resource Service started
GSSException: Failure unspecified at GSS-API level (Mechanism level: UserFile parameter null)
at com.teradata.tdgss.jtdgss.TdgssParseXml.<init>(Unknown Source)
at com.teradata.tdgss.jtdgss.TdgssConfigApi.<init>(Unknown Source)
at com.teradata.tdgss.jtdgss.TdgssManager.<init>(Unknown Source)
[...]
2015-01-28 10:47:35,081 : JOnASDataBaseManagerService.__doStart : JOnAS: Cannot create datasource: 'GDFE_DS'
java.lang.NullPointerException
at com.teradata.tdgss.jtdgss.TdgssConfigApi.GetMechanisms(Unknown Source)
at com.teradata.tdgss.jtdgss.TdgssManager.<init>(Unknown Source)
at com.teradata.tdgss.jtdgss.TdgssManager.getInstance(Unknown Source)
La librairie tdgssconfig.jar contient le fichier XML tdgssUserConfigFile.xml.
En décompilant les classes qui remontent l'exception, j'ai eu ceci :
Dans le fichier TdgssParseXml :
Dans le fichier TdgssConfigApi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if(inputstream1 == null) { throw new GSSException(11, 0xe1000099, "UserFile parameter null"); } else
En voyant le code, j'en conclu que le XML n'est pas "vu" par Jonas, mais je ne comprends pas pourquoi, ni comment ajouter ce XML dans le classpath pour qu'il soit bien interprétée par la librairie teradata...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 String s = "com/teradata/tdgss/jtdgss/TdgssLibraryConfigFile.xml"; String s1 = "TdgssUserConfigFile.xml"; synchronized(com.teradata.tdgss.jtdgss.TdgssConfigApi.class) { if(doc == null) { ClassLoader classloader = getClass().getClassLoader(); if(classloader == null) classloader = ClassLoader.getSystemClassLoader(); if(classloader == null) { System.err.println("WARNING ! System Class Loader is not available!!"); ClassLoader classloader1 = classloader.getParent(); } java.io.InputStream inputstream = null; java.io.InputStream inputstream1 = null; do { if(classloader == null) break; if(inputstream == null) inputstream = classloader.getResourceAsStream(s); if(inputstream1 == null) inputstream1 = classloader.getResourceAsStream(s1); if(inputstream1 != null && inputstream != null) break; classloader = classloader.getParent(); } while(true); try { TdgssParseXml tdgssparsexml = new TdgssParseXml(inputstream, inputstream1); TdgssConfigApi _tmp = this; doc = tdgssparsexml.parse(); }
A noter que le même fonctionnement permet au jonas 4.9.0 de démarrer sans aucun problème !
J'ai commencer à tenter plusieurs choses : ajouter le XML directement dans la librairie terajdbc4.jar, placer le XML dans JONAS_BAS/conf, "bundliser" les librairies avec bnd pour les placer directement dans le répertoire deploy... Rien n'a fonctionner !
Je suis preneur de toute idée ou explication qui m'aiderait à comprendre le pourquoi du comment...
D'avance, merci beaucoup pour votre aide !
Partager