Bonjour à tous.
J'ai un soucis lors du déploiement d'une application sous Axis2, utilisant Spring et hibernate, le tout packagé dans un AAR.
Lors du déploiement il n'arrive pas à trouver mon driver Oracle, or, celui-ci est bien dans mon AAR.
Il semble que ce ne soit pas si simple d'intégrer Spring dans Axis2 à cause de problème de classloader.
En suivant la doc et les forums, j'ai effectué les manipulations suivantes :
- Ajout de <bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" /> dans mon context.xml
- création d'une classe appelée au démarrage via : class="com.atos.ims.webservices.SpringBootstrap" placé dans le services.xml (première balise)
- cette classe qui hérite de ServiceLifeCycle modifie le classloader ainsi:
- mon fichier webserviceContext.xml contient un bean vers ma classe Web service.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void startUp(ConfigurationContext ctx, AxisService service) { ClassLoader classLoader = service.getClassLoader(); ClassPathXmlApplicationContext appCtx = new ClassPathXmlApplicationContext( new String[] { "context.xml", "webserviceContext.xml" }, false); appCtx.setClassLoader(classLoader); appCtx.refresh(); }
Avec ceci, la plupart des classes sont trouvées, sauf si elles existent aussi dans le dossier lib de Tomcat (typiquement les classes de pool de connexion du commons-dbcp.jar).
Que me manque-t-il pour que toutes les classes soient cherchées (et trouvées) en priorité dans mon AAR?
Merci !
Partager