What version of CXF are you using? From my experience I have found that 2.1.4 is broken at this exact location and I've moved to 2.1.5-SNAPSHOT. We have also discovered that 2.1.5-SNAPSHOT has another problem if the web service you're calling doesn't have any input parameters. It appears that the XMLBeans databinding still needs work from a client perspective.
Christopher Cheng wrote: > > I've got this after setting the parameters in spring. What am I missing? > > org.apache.cxf.interceptor.Fault: Marshalling Error: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:176) > at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:166) > at > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:104) > at > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) > at $Proxy37.fareRQ(Unknown Source) > at > com.faresheets.webservices.websvc.FarePortType_FarePortType_Client.main(FarePortType_FarePortType_Client.java:83) > 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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) > Caused by: javax.xml.bind.MarshalException > - with linked exception: > [javax.xml.bind.JAXBException: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:331) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:257) > at > javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:381) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:155) > ... 16 more > Caused by: javax.xml.bind.JAXBException: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:242) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:257) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:143) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:185) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:305) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:312) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:71) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:490) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328) > ... 20 more > Caused by: javax.xml.bind.JAXBException: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context > at > com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:587) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:140) > ... 26 more > Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: > Marshalling > Error: org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not > known > to this context > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) > at $Proxy37.fareRQ(Unknown Source) > at > com.faresheets.webservices.websvc.FarePortType_FarePortType_Client.main(FarePortType_FarePortType_Client.java:83) > 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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) > Caused by: org.apache.cxf.interceptor.Fault: Marshalling Error: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:176) > at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:166) > at > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:104) > at > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) > ... 7 more > Caused by: javax.xml.bind.MarshalException > - with linked exception: > [javax.xml.bind.JAXBException: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:331) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:257) > at > javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:381) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:155) > ... 16 more > Caused by: javax.xml.bind.JAXBException: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:242) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:257) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:143) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:185) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:305) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:312) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:71) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:490) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328) > ... 20 more > Caused by: javax.xml.bind.JAXBException: > org.opentravel.ota.x2003.x05.OTAAirFareDisplayRQDocument is not known to > this context > at > com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:587) > at com.sun.xm > > On Thu, Mar 19, 2009 at 5:31 PM, Willem Jiang > <[email protected]>wrote: > >> Hi >> I don't think we need to support to change the databinding for Dispatch >> API. It's a JAXWS API which relays on JAXB. >> >> But if you take a look at the example\wsdlfirst_xmlbeans or here[1], you >> can see it is not difficult to switch the dataBinding from JAXB to >> XMLBeans. >> >> [1] >> >> http://svn.apache.org/repos/asf/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/xmlbeans/cxf.xml >> >> Willem >> >> Christopher Cheng wrote: >> > In the class "org.apache.cxf.jaxws.ServiceImpl" which is the only >> > implementation of "javax.xml.ws.spi.ServiceDelegate" in project, >> > JAXBDataBinding is hardcoded. >> > So, how could I switch to XMLBeans for clients? >> > >> > public Dispatch createDispatch(QName portName, >> > JAXBContext context, >> > Mode mode, >> > WebServiceFeature... >> features) >> { >> > JaxWsClientFactoryBean clientFac = new >> JaxWsClientFactoryBean(); >> > >> > //Initialize Features. >> > configureObject(portName.toString() + >> ".jaxws-client.proxyFactory", >> > clientFac); >> > AbstractServiceFactoryBean sf = null; >> > try { >> > *sf = createDispatchService(new JAXBDataBinding(context)); >> > * } catch (ServiceConstructionException e) { >> > throw new WebServiceException(e); >> > } >> > Endpoint endpoint = getJaxwsEndpoint(portName, sf, features); >> > Client client = new ClientImpl(getBus(), endpoint, >> > clientFac.getConduitSelector()); >> > for (AbstractFeature af : clientFac.getFeatures()) { >> > af.initialize(client, bus); >> > } >> > Dispatch disp = new DispatchImpl(bus, client, >> mode, >> > context, >> > Object.class, getExecutor()); >> > configureObject(disp); >> > return disp; >> > } >> > >> >> > > -- View this message in context: http://www.nabble.com/How-do-I-switch-DataBinding-from-JAXB-to-XMLBeans--tp22584093p22600799.html Sent from the cxf-user mailing list archive at Nabble.com.
