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.

Reply via email to