Axis2 + hibernate + spring => AAR
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:
Code:
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();
} |
- mon fichier webserviceContext.xml contient un bean vers ma classe Web service.
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 !