WebLogic clientgen doesn't work from WebLogic

2019-07-20 01:05发布

问题:

I'm using clientgen ant task (which is a part of WebLogic) to generate JAX-WS client from the WSDL. Generated code works very well when I'm using it from the command line and wlfullclient.jar in the classpath. But it doesn't work from EJB that is deployed to the same instance from which wlfullclient.jar was generated. Error is quite long, and looks like linked to class loaders, that is very annoying because I'm using the same JAVA version and other libraries that are coming embedded with WebLogic. Any ideas about what is wrong?
Error log is:

<1341096792539> <BEA-010065> <MessageDrivenBean threw an Exception in onMessage(). The exception was:
java.lang.ExceptionInInitializerError.
java.lang.ExceptionInInitializerError
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                at java.lang.Class.newInstance0(Class.java:355)
                at java.lang.Class.newInstance(Class.java:308)
                at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)
                at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)
                at javax.xml.ws.spi.Provider.provider(Provider.java:83)
                at javax.xml.ws.Service.<init>(Service.java:56)
                at s.mra.ws.client.proxy.MRADataExchangeService.<init>(MRADataExchangeService.java:115)
                at s.mra.ws.client.impl.WSMraClient.initialize(WSMraClient.java:222)
                at s.mra.ws.client.impl.WSMraClient.sendMessageToWS(WSMraClient.java:93)
                at s.mra.message.router.WSMessageRouterBean.onMessage(WSMessageRouterBean.java:171)
                at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
                at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
                at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
                at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
                at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
                at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
                at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
                at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
                at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
                at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
javax.xml.ws.WebServiceException: Error creating JAXBContext for W3CEndpointReference.
                at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:226)
                at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:221)
                at java.security.AccessController.doPrivileged(Native Method)
                at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:221)
                at com.sun.xml.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:88)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                at java.lang.Class.newInstance0(Class.java:355)
                at java.lang.Class.newInstance(Class.java:308)
                at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)
                at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)
                at javax.xml.ws.spi.Provider.provider(Provider.java:83)
                at javax.xml.ws.Service.<init>(Service.java:56)
                at s.mra.ws.client.proxy.MRADataExchangeService.<init>(MRADataExchangeService.java:115)
                at s.mra.ws.client.impl.WSMraClient.initialize(WSMraClient.java:222)
                at s.mra.ws.client.impl.WSMraClient.sendMessageToWS(WSMraClient.java:93)
                at s.mra.message.router.WSMessageRouterBean.onMessage(WSMessageRouterBean.java:171)
                at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
                at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
                at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
                at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
                at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
                at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
                at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
                at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
                at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
                at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
javax.xml.bind.JAXBException
- with linked exception:
[com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
org.w3c.dom.Element is an interface, and JAXB can't handle interfaces.
                this problem is related to the following location:
                                at org.w3c.dom.Element
                                at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
                                at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
org.w3c.dom.Element does not have a no-arg default constructor.
                this problem is related to the following location:
                                at org.w3c.dom.Element
                                at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
                                at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
]
                at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:226)
                at javax.xml.bind.ContextFinder.find(ContextFinder.java:372)
                at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
                at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
                at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:224)
                at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:221)
                at java.security.AccessController.doPrivileged(Native Method)
                at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:221)
                at com.sun.xml.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:88)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                at java.lang.Class.newInstance0(Class.java:355)
                at java.lang.Class.newInstance(Class.java:308)
                at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)
                at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)
                at javax.xml.ws.spi.Provider.provider(Provider.java:83)
                at javax.xml.ws.Service.<init>(Service.java:56)
                at s.mra.ws.client.proxy.MRADataExchangeService.<init>(MRADataExchangeService.java:115)
                at s.mra.ws.client.impl.WSMraClient.initialize(WSMraClient.java:222)
                at s.mra.ws.client.impl.WSMraClient.sendMessageToWS(WSMraClient.java:93)
                at s.mra.message.router.WSMessageRouterBean.onMessage(WSMessageRouterBean.java:171)
                at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
                at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
                at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
                at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
                at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
                at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
                at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
                at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
                at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
                at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
org.w3c.dom.Element is an interface, and JAXB can't handle interfaces.
                this problem is related to the following location:
                                at org.w3c.dom.Element
                                at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
                                at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
org.w3c.dom.Element does not have a no-arg default constructor.
                this problem is related to the following location:
                                at org.w3c.dom.Element
                                at public java.util.List com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements.elements
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
                                at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
                                at com.sun.xml.ws.developer.MemberSubmissionEndpointReference

                at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
                at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:438)
                at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
                at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
                at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)
                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 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:211)
                at javax.xml.bind.ContextFinder.find(ContextFinder.java:372)
                at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
                at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
                at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:224)
                at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:221)
                at java.security.AccessController.doPrivileged(Native Method)
                at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:221)
                at com.sun.xml.ws.spi.ProviderImpl.<clinit>(ProviderImpl.java:88)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                at java.lang.Class.newInstance0(Class.java:355)
                at java.lang.Class.newInstance(Class.java:308)
                at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)
                at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)
                at javax.xml.ws.spi.Provider.provider(Provider.java:83)
                at javax.xml.ws.Service.<init>(Service.java:56)
                at s.mra.ws.client.proxy.MRADataExchangeService.<init>(MRADataExchangeService.java:115)
                at s.mra.ws.client.impl.WSMraClient.initialize(WSMraClient.java:222)
                at s.mra.ws.client.impl.WSMraClient.sendMessageToWS(WSMraClient.java:93)
                at s.mra.message.router.WSMessageRouterBean.onMessage(WSMessageRouterBean.java:171)
                at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
                at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
                at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
                at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
                at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
                at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
                at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
                at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
                at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
                at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
> 



<1341096792650> <BEA-010065> <MessageDrivenBean threw an Exception in onMessage(). The exception was:
java.lang.NoClassDefFoundError: Could not initialize class weblogic.wsee.jaxws.spi.WLSProvider.
java.lang.NoClassDefFoundError: Could not initialize class weblogic.wsee.jaxws.spi.WLSProvider
                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                at java.lang.Class.newInstance0(Class.java:355)
                at java.lang.Class.newInstance(Class.java:308)
                at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)
                at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)
                at javax.xml.ws.spi.Provider.provider(Provider.java:83)
                at javax.xml.ws.Service.<init>(Service.java:56)
                at s.mra.ws.client.proxy.MRADataExchangeService.<init>(MRADataExchangeService.java:115)
                at s.mra.ws.client.impl.WSMraClient.initialize(WSMraClient.java:222)
                at s.mra.ws.client.impl.WSMraClient.sendMessageToWS(WSMraClient.java:93)
                at s.mra.message.router.WSMessageRouterBean.onMessage(WSMessageRouterBean.java:171)
                at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
                at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
                at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
                at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4547)
                at weblogic.jms.client.JMSSession.execute(JMSSession.java:4233)
                at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3709)
                at weblogic.jms.client.JMSSession.access$000(JMSSession.java:114)
                at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5058)
                at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
                at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
                at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
> 

回答1:

Problem was in overrided via classloading JAXB library. After dependecies clean up it works fine.