Tomcat : charger une resource présente dans le Shared Class loader

Tomcat : charger une resource présente dans le Shared Class loader - Java - Programmation

Marsh Posté le 06-01-2010 à 12:15:26    

Bonjour,
 
J'ai lu une doc sur tomcat et les classloader :
http://www-igm.univ-mlv.fr/~dr/XPO [...] .php?rub=9
 
Cependant je n'arrive toujours pas à charger une ressource (.properties) présente dans tomcat/shared/classes.
Dans mon catalina.conf, ce dossier est bien spécifié comme valeur :  


shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar


Ensuite il existe sur le filesystem la resource que je veux charger : il s'agit de ${catalina.base}/shared/classes/alfresco/extension/services.properties
 
Dans mon code j'ai essaié toutes les syntaxe de chargement du fichier :

Code :
  1. URL url = Thread.currentThread().getContextClassLoader().getResource(
  2.                 "alfresco/extension/msc-services.properties" );
  3.         url = Thread.currentThread().getContextClassLoader().getResource(
  4.                 "alfresco/extension/msc-services" );
  5.         url = Thread.currentThread().getContextClassLoader().getResource(
  6.                 "alfresco.extension.msc-services.properties" );
  7.         url = Thread.currentThread().getContextClassLoader().getResource(
  8.                 "alfresco.extension.msc-services" );
  9.         url = Thread.currentThread().getContextClassLoader().getResource(
  10.                 "/alfresco/extension/msc-services.properties" );


A chaque fois, url a la valeur null (= ressource non trouvée).
 
Particularité : l'affichage de Thread.currentThread().getContextClassLoader() donne :
 


Thread.currentThread().getContextClassLoader()
     (org.apache.catalina.loader.WebappClassLoader) WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@181b3d4


...tout comme s'il n'existait que le webapp class loader. Alors que le shared class loader a été défini.
 
Une idée pour charger ma ressource ?
 
Merci  :jap:


Message édité par Barnabe43 le 06-01-2010 à 12:16:10

---------------
Asus P5Q Pro | C2D E8400 3GHz@3.7GHz | Noctua NH-C12P | Extreme Patriot 2x2Go  DDR2-PC8500 | Inno 3D GeForce GTX 260 | WD Raptor 74Go 8Mo | Raid0 Seagate Barracuda 7200.12 500Go
Reply

Marsh Posté le 06-01-2010 à 12:15:26   

Reply

Marsh Posté le 06-01-2010 à 12:33:21    

Youpi, je viens de trouver ! :)
 
Alors la réponse :
 
En fait, en lisant consciencieusement (:D) la doc tomcat et les classloader, le WebAppClassLoader est fils du SharedClassLoader donc on accède au SharedClassLoader (et la ressource que je souhaite) avec :
 

Code :
  1. URL url = Thread.currentThread().getContextClassLoader().getParent()
  2.                 .getResource( "alfresco/extension/services.properties" );


Note : getParent() monte dans la hierarchie des classloader.
 
Merci qd même :)


---------------
Asus P5Q Pro | C2D E8400 3GHz@3.7GHz | Noctua NH-C12P | Extreme Patriot 2x2Go  DDR2-PC8500 | Inno 3D GeForce GTX 260 | WD Raptor 74Go 8Mo | Raid0 Seagate Barracuda 7200.12 500Go
Reply

Marsh Posté le 04-02-2010 à 17:36:30    

les fichiers .properties dans /extension, au lieu de /messages ?
 [:delarue5]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed