2011-07-28 1 views
1

J'ai déployé un fichier de guerre CXF Web Service sur un serveur Weblogic 10.3.5 avec OracleSOA, et j'ai reçu les exceptions suivantes. J'ai testé le fichier war sur un autre Weblogic sans OracleSOA sans serveur et fonctionne bien.Problème lié à l'exécution de CXF sur le serveur SOA Weblogic 10.3.5/w

<Jul 28, 2011 3:08:31 PM HKT> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004 
weblogic.application.ModuleException: 
     at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1510) 
     at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52) 
     at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 
     Truncated. see log file for complete stacktrace 
Caused By: java.lang.NoSuchMethodException: oracle.j2ee.ws.wsdl.extensions.soap.SOAPBindingImpl.getElementType() 
     at java.lang.Class.getDeclaredMethod(Class.java:1937) 
     at org.apache.cxf.tools.common.ExtensionInvocationHandler.invoke(ExtensionInvocationHandler.java:41) 
     at $Proxy607.getElementType(Unknown Source) 
     at org.apache.cxf.jaxws.support.JaxWsEndpointImpl.hasUsingAddressing(JaxWsEndpointImpl.java:240) 
     at org.apache.cxf.jaxws.support.JaxWsEndpointImpl.extractWsdlExtensibilities(JaxWsEndpointImpl.java:201) 
     Truncated. see log file for complete stacktrace 
> 
<Jul 28, 2011 3:08:31 PM HKT> <Error> <Console> <BEA-240003> <Console encountered the following error weblogic.application.ModuleException: 
     at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1510) 
     at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52) 
     at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 
     at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200) 
     at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247) 
     at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52) 
     at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119) 
     at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27) 
     at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636) 
     at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52) 
     at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205) 
     at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:43) 
     at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161) 
     at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) 
     at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569) 
     at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150) 
     at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116) 
     at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323) 
     at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844) 
     at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253) 
     at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440) 
     at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163) 
     at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195) 
     at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13) 
     at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68) 
     at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528) 
     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) 
     at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) 
Caused by: java.lang.NoSuchMethodException: oracle.j2ee.ws.wsdl.extensions.soap.SOAPBindingImpl.getElementType() 
     at java.lang.Class.getDeclaredMethod(Class.java:1937) 
     at org.apache.cxf.tools.common.ExtensionInvocationHandler.invoke(ExtensionInvocationHandler.java:41) 
     at $Proxy607.getElementType(Unknown Source) 
     at org.apache.cxf.jaxws.support.JaxWsEndpointImpl.hasUsingAddressing(JaxWsEndpointImpl.java:240) 
     at org.apache.cxf.jaxws.support.JaxWsEndpointImpl.extractWsdlExtensibilities(JaxWsEndpointImpl.java:201) 
     at org.apache.cxf.jaxws.support.JaxWsEndpointImpl.<init>(JaxWsEndpointImpl.java:191) 
     at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createEndpoint(JaxWsServiceFactoryBean.java:235) 
     at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:166) 
     at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:157) 
     at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:202) 
     at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:433) 
     at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:322) 
     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:239) 
     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:509) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
     at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481) 
     at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
     at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
     at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181) 
     at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1872) 
     at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3153) 
     at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1508) 

J'ai ajouté des lignes suivantes à weblogic.xml, mais ne peut pas résoudre le problème:

<wls:container-descriptor> 
    <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> 
</wls:container-descriptor> 

Comment résoudre ce problème, car le fichier de guerre supposé déployer sur le serveur SOA Weblogic?

Répondre

3

Emballez le juddiv3 ainsi que la guerre CxF comme une oreille

Ajouter les descripteurs de déploiement suivants à l'oreille fichier "META-INF/application.xml": fichier

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"> 
    <display-name>juddiv3</display-name> 
    <module> 
    <web> 
     <web-uri>juddiv3</web-uri> 
     <context-root>juddiv3</context-root> 
    </web> 
    </module> 
</application> 

« META.INF/weblogic-application.xml ":

<?xml version="1.0" encoding="UTF-8"?> 
<wls:weblogic-application xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd http://www.bea.com/ns/weblogic/weblogic-application http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd"> 
    <wls:application-param> 
    <wls:param-name>webapp.encoding.default</wls:param-name> 
    <wls:param-value>UTF-8</wls:param-value> 
    </wls:application-param> 
    <wls:prefer-application-packages> 
    <wls:package-name>javax.wsdl.*</wls:package-name> 
    <!-- If using hibernate also add this 
    <wls:package-name>antlr.*</wls:package-name> 
    --> 
    </wls:prefer-application-packages> 
</wls:weblogic-application> 
+0

Problème résolu. Merci beaucoup. – chris13work

1

Un similar issue reported with CXF and Weblogic 10.3.3 indique que l'erreur est parce qu'Oracle charge son propre wsdl4j et utilise à la place un de votre guerre. Le pot wsdl4j est-il présent dans le WEB-INF/lib de votre guerre?

Alors seulement wls: prefer-web-inf-classes sera efficace.

Sinon CXF recommends packaging your war comme une oreille sur Weblogic, ajoutez un weblogic-application.xml (Weblogic spécifique) dans le dossier META-INF et en utilisant

<prefer-application-packages> 

Pouvez-vous essayer la première approche et la seconde?