Je suis en train d'essayer de migrer une application webservice qui déployait très bien sur Weblogic 9 vers Weblogic 10.
La petite difficulté c'est que mon application utilise JAX-WS et que donc sur Weblogic 9 j'avais du packager les librairies jax-ws dans le WAR, alors que ces librairies sont déjà intégrées dans Weblogic 10.
Pour éviter contourner les conflits et forcer Weblogic à utiliser les librairies de mon WAR plutôt que les siennes, j'ai donc mis mon WAR dans un EAR avec le weblogic-application.xml suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application>
  <application-param>
    <param-name>webapp.encoding.default</param-name>
    <param-value>UTF-8</param-value>
  </application-param>
  <prefer-application-packages>
    <package-name>com.sun.xml.*</package-name>
    <package-name>javax.xml.bind.*</package-name>
    <package-name>javax.jws.*</package-name>
  </prefer-application-packages>
</weblogic-application>
Avec ça effectivement je n'ai plus de ClassCastException. Par contre j'ai l'exception suivante:
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
 
javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
	at javax.xml.soap.SAAJMetaFactory.getInstance(SAAJMetaFactory.java:85)
	at javax.xml.soap.MessageFactory.newInstance(MessageFactory.java:148)
	at com.sun.xml.ws.api.SOAPVersion.<init>(SOAPVersion.java:178)
	at com.sun.xml.ws.api.SOAPVersion.<clinit>(SOAPVersion.java:83)
	at com.sun.xml.ws.api.BindingID.<clinit>(BindingID.java:318)
	at org.jvnet.jax_ws_commons.spring.SpringService.getObject(SpringService.java:294)
	at org.jvnet.jax_ws_commons.spring.SpringService.getObject(SpringService.java:45)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:1236)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1207)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:262)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:261)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:109)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1099)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:861)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:421)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
	at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:465)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(Unknown Source)
	at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:175)
	at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1784)
	at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2999)
	at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1371)
Ce qui me parait bizarre c'est que cette fameuse class SAAJMetaFactoryImpl qu'il se plaint de ne pas trouver fait partie du JDK 1.6.0_17 du Mac sur lequel tourne mon serveur.

Quelqu'un a une idée d'où peut venir ce conflit?