You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Christopher Cheng <ch...@gmail.com> on 2009/03/18 18:19:20 UTC
How do I switch DataBinding from JAXB to XMLBeans?
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<Object> 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<Object> disp = new DispatchImpl<Object>(bus, client, mode,
context,
Object.class, getExecutor());
configureObject(disp);
return disp;
}
Re: How do I switch DataBinding from JAXB to XMLBeans?
Posted by Christopher Cheng <ch...@gmail.com>.
I fixed the port name from "SoapPort" to "FarePortType", and it is working
now for version 2.1.5 snapshot
On Mon, Mar 23, 2009 at 6:39 PM, Christopher Cheng <
christopher.sw.cheng@gmail.com> wrote:
> Hi RayKnight
>
> I tried both 2.1.5 snapshot (Mon Mar 23 07:32:5) and 2.2
> 2.1.5 - same problem
> 2.2 - same problem
>
> Here's my configuration, what's wrong....
>
> <jaxws:client name="{http://webservices.mycompany.com/websvc}SoapPort<http://webservices.mycompany.com/websvc%7DSoapPort>
> "
> createdFromAPI="true">
> <jaxws:dataBinding>
> <bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding"/>
> </jaxws:dataBinding>
> </jaxws:client>
>
> <jaxws:endpoint name="{
> http://webservices.mycompany.com/websvc}SoapPort<http://webservices.mycompany.com/websvc%7DSoapPort>
> "
> wsdlLocation="http://webservices.mycompany
> .com/wsdl/OTA_AirFareDisplayRQ.wsdl"
> createdFromAPI="true">
> <jaxws:properties>
> <entry key="schema-validation-enabled" value="true" />
> </jaxws:properties>
> <jaxws:dataBinding>
> <bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding"/>
> </jaxws:dataBinding>
> </jaxws:endpoint>
>
> On Thu, Mar 19, 2009 at 9:57 PM, RayKnight <
> raylynn.knight@lexisnexis.com> wrote:
>
>>
>> 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
>> > <wi...@gmail.com>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.
>>
>>
>
Re: How do I switch DataBinding from JAXB to XMLBeans?
Posted by Christopher Cheng <ch...@gmail.com>.
Hi RayKnight
I tried both 2.1.5 snapshot (Mon Mar 23 07:32:5) and 2.2
2.1.5 - same problem
2.2 - same problem
Here's my configuration, what's wrong....
<jaxws:client name="{http://webservices.mycompany.com/websvc}SoapPort"
createdFromAPI="true">
<jaxws:dataBinding>
<bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding"/>
</jaxws:dataBinding>
</jaxws:client>
<jaxws:endpoint name="{http://webservices.mycompany.com/websvc}SoapPort"
wsdlLocation="http://webservices.mycompany
.com/wsdl/OTA_AirFareDisplayRQ.wsdl"
createdFromAPI="true">
<jaxws:properties>
<entry key="schema-validation-enabled" value="true" />
</jaxws:properties>
<jaxws:dataBinding>
<bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding"/>
</jaxws:dataBinding>
</jaxws:endpoint>
On Thu, Mar 19, 2009 at 9:57 PM, RayKnight <ra...@lexisnexis.com>wrote:
>
> 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
> > <wi...@gmail.com>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.
>
>
Re: How do I switch DataBinding from JAXB to XMLBeans?
Posted by RayKnight <ra...@lexisnexis.com>.
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
> <wi...@gmail.com>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.
Re: How do I switch DataBinding from JAXB to XMLBeans?
Posted by Christopher Cheng <ch...@gmail.com>.
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 <wi...@gmail.com>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<Object> 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<Object> disp = new DispatchImpl<Object>(bus, client,
> mode,
> > context,
> > Object.class, getExecutor());
> > configureObject(disp);
> > return disp;
> > }
> >
>
>
Re: How do I switch DataBinding from JAXB to XMLBeans?
Posted by Willem Jiang <wi...@gmail.com>.
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<Object> 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<Object> disp = new DispatchImpl<Object>(bus, client, mode,
> context,
> Object.class, getExecutor());
> configureObject(disp);
> return disp;
> }
>