Getting CXF to work with MOXy has been an ongoing battle for me for many months 
now.   There has been some progress on trunk for 3.0 and I’m hoping that 3.0 
will be able to use MOXy with some level of confidence.   However, every time I 
try running things, I hit another MOXy bug that I end up logging.  Getting the 
fix from them takes a bit of time.   That said, 3.0 is getting much closer now.

Dan



On Nov 8, 2013, at 5:49 AM, Alain PANNETIER <[email protected]> wrote:

> Hi all,
> 
> Problem
> ======
> I'm having trouble at server startup in a WSDL first server.
> The server has a WSDL plus a few external XSDs.
> Generation of classes works OK and the server started several times without
> pb.
> 
> At startup Reflection complains about MOXy:
> 
> java.lang.NoSuchMethodException:
> org.eclipse.persistence.jaxb.JAXBContext.getBeanInfo
> 
> (complete trace below).
> 
> Background Info:
> =============
> 
> Each operation in the WSDL has two possible implementations
> - A real implementation for production
> - A mock implementation serving predefined responses determined by the
> incoming request argument values.
> Implementation classes are injected by Springs (separate
> applicationContext.xml).
> 
> The predefined mock responses are stored in XML files.  To parse these XML
> files I use EclipseLink MOXy (same annotated classes as the ones generated
> by wsdl2java) because MOXy allows to describe the XML root node separately
> (i.e. I don't have to fiddle with the annotations in the generated classes).
> 
> Under Debug:
> ===========
> Putting all this under debug shows that CXF wraps eclipseLink MOXy JAXB
> implementation with a JAXBContextProxy and then calls what it thinks is
> this wrapper. Except that it just calls MOXy and reflections reports a
> NoSuchMethodException for getBeanInfo (the sole method of JAXBContextProxy
> interface).
> 
> Solution ???:
> ==========
> All this is still very obscure for me. I guess I just need to understand
> how to tell CXF to stick with its standard JAXB implementation and keep
> MOXy for my mock implementation.
> The problem is that the generated objects are in a package of their own
> along with a jaxb.properties (pointing at
> org.eclipse.persistence.jaxb.JAXBContextFactory - ie MOXy).
> What's strange is that this used to work very well a few weeks ago.
> 
> Full Trace:
> ========
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'cbiowsbpService': Invocation of init method failed; nested
> exception is javax.xml.ws.WebServiceException:
> java.lang.reflect.UndeclaredThrowableException
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
>    at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
>    at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
>    at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
>    at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
>    at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
>    at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
>    at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
>    at
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
>    at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
>    at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
>    at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
>    at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
>    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>    at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
>    at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
>    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
>    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
>    at
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
>    at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>    at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>    at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>    at java.lang.Thread.run(Thread.java:722)
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.reflect.UndeclaredThrowableException
>    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:369)
>    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251)
>    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:537)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>    at java.lang.reflect.Method.invoke(Method.java:601)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
>    ... 26 more
> Caused by: java.lang.reflect.UndeclaredThrowableException
>    at com.sun.proxy.$Proxy38.getBeanInfo(Unknown Source)
>    at org.apache.cxf.common.jaxb.JAXBUtils.getBeanInfo(JAXBUtils.java:1155)
>    at
> org.apache.cxf.jaxb.JAXBSchemaInitializer.getBeanInfo(JAXBSchemaInitializer.java:140)
>    at
> org.apache.cxf.jaxb.JAXBDataBinding.checkForJAXBAnnotations(JAXBDataBinding.java:439)
>    at
> org.apache.cxf.jaxb.JAXBDataBinding.justCheckForJAXBAnnotations(JAXBDataBinding.java:427)
>    at
> org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:352)
>    at
> org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
>    at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:446)
>    at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:548)
>    at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265)
>    at
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:205)
>    at
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102)
>    at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159)
>    at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
>    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:454)
>    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334)
>    ... 35 more
> Caused by: java.lang.NoSuchMethodException:
> org.eclipse.persistence.jaxb.JAXBContext.getBeanInfo(java.lang.Class)
>    at java.lang.Class.getMethod(Class.java:1624)
>    at
> org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
>    ... 51 more
> 2013 11 08 13:17:34,615 ERROR [message id: none] [operation: none]     -
> Context initialization failed ContextLoader        (
> ContextLoader.java:319)
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'cbiowsbpService': Invocation of init method failed; nested
> exception is javax.xml.ws.WebServiceException:
> java.lang.reflect.UndeclaredThrowableException
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
>    at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
>    at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
>    at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
>    at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
>    at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
>    at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
>    at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
>    at
> org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
>    at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
>    at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
>    at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
>    at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
>    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>    at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
>    at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
>    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
>    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
>    at
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
>    at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>    at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>    at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>    at java.lang.Thread.run(Thread.java:722)
> Caused by: javax.xml.ws.WebServiceException:
> java.lang.reflect.UndeclaredThrowableException
>    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:369)
>    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251)
>    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:537)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>    at java.lang.reflect.Method.invoke(Method.java:601)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
>    at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
>    ... 26 more
> Caused by: java.lang.reflect.UndeclaredThrowableException
>    at com.sun.proxy.$Proxy38.getBeanInfo(Unknown Source)
>    at org.apache.cxf.common.jaxb.JAXBUtils.getBeanInfo(JAXBUtils.java:1155)
>    at
> org.apache.cxf.jaxb.JAXBSchemaInitializer.getBeanInfo(JAXBSchemaInitializer.java:140)
>    at
> org.apache.cxf.jaxb.JAXBDataBinding.checkForJAXBAnnotations(JAXBDataBinding.java:439)
>    at
> org.apache.cxf.jaxb.JAXBDataBinding.justCheckForJAXBAnnotations(JAXBDataBinding.java:427)
>    at
> org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:352)
>    at
> org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
>    at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:446)
>    at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:548)
>    at
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265)
>    at
> org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:205)
>    at
> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102)
>    at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159)
>    at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
>    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:454)
>    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334)
>    ... 35 more
> Caused by: java.lang.NoSuchMethodException:
> org.eclipse.persistence.jaxb.JAXBContext.getBeanInfo(java.lang.Class)
>    at java.lang.Class.getMethod(Class.java:1624)
>    at
> org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
>    ... 51 more

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to