Thanks, that worked. I had, incorrectly, assumed it was taking that information 
from the annotations on the service class.

Thanks for your help.

Sven

-----Original Message-----
From: Freeman Fang [mailto:[email protected]] 
Sent: Thursday, May 05, 2011 10:57 PM
To: [email protected]
Subject: Re: jaxws:client with non-soap binding?

Hi,

If you specify wsdlLocation for jaxws:endpoint, then it will build  
servicemodel from wsdl, so that the xmlbinding you specified in wsdl  
should be picked up.
Or you can explicitly specify xml bindingId for  jaxws:endpoint, which  
should also work.

Freeman
On 2011-5-6, at 下午1:44, Sven Zethelius wrote:

> I've, tried both the xformat and http, using the wsdl_first, both of  
> which point to the XMLBindingFactory.
> The difference between the wsdl_first_xml_wrapped and what I'm  
> trying is I'm using the Spring bean syntax (so I can inject the  
> client) instead of the direct object invoke. The problem, as far as  
> I can tell, is that the JaxWsProxyFactoryBeanDefinitionParser never  
> sets the  
> org.apache.cxf.jaxws.JaxWsClientFactoryBean.setBindingId(String),  
> which causes the initialization to "default" to soap bindingId  
> instead of looking it up from the BindingInfo.   
> JaxWsServerFactoryBean initialization goes through  
> WSDLServiceBuilder to build EndpointInfo/BindingInfo, while  
> JaxWsClientFactoryBean doesn't, building it itself in  
> AbstractWSDLBasedEndpointFactory, but relying on someone calling  
> setBindingId first.
>
> What I'm doing:
>       <jaxws:client id="JMS_prototype.Client"
>               xmlns:tns="urn:expedia:cc:samples:sampleservice:v2:contract"
>               serviceName="tns:SampleService"  
> endpointName="tns:SampleServiceJMSBinding"
>               address="jms://"
>                
> serviceClass 
> ="expedia.cc.samples.sampleservice.v2.contract.SampleServicePortType">
>               <jaxws:features>
>                       <ref bean="JMSConfigFeature" />
>               </jaxws:features>
>       </jaxws:client>
>
> Instead of the sample code:
>        SampleService ss = new SampleService(wsdlURL, SERVICE_NAME);
>        SampleServicePortType port =  
> ss.getSampleServiceJMSSOAPBinding();
>
> I want it in bean definition, so that I can leverage the  
> jaxws:features, and inject it into other bean definitions.
>
>
>
> Wsdl:
> xmlns:xformat="http://cxf.apache.org/bindings/xformat";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:jms="http://cxf.apache.org/transports/jms";
>
>       <wsdl:binding name="SampleServiceBinding"  
> type="tns:SampleServicePortType">
> <!-- xformat does not work -->
>               <xformat:binding/>
>               <wsdl:operation name="operationConcatenateStrings">
>                       <wsdl:input>
>                               <mime:content type="application/xml" />
>                       </wsdl:input>
>               </wsdl:operation>
> <!-- soap works.  Commented out
>               <soap:binding style="document"
>                       transport="http://cxf.apache.org/transports/jms"; />
>               <wsdl:operation name="operationConcatenateStrings">
>                       <soap:operation 
> soapAction="local://operationConcatenateStrings" />
>                       <wsdl:input>
>                               <mime:content type="application/xml" />
>                       </wsdl:input>
>               </wsdl:operation>
> -->   
>       </wsdl:binding>
>
>       <wsdl:service name="SampleService">
>               <wsdl:port name="SampleServiceJMS"
>                       binding="tns:SampleServiceBinding">
>                       <jms:address />
>               </wsdl:port>
>       </wsdl:service>
>
> ClientImpl.invoke:
>       chain.toString()
> Chain org.apache.cxf.phase.PhaseInterceptorChain@22cf71b7. Current  
> flow:
>  setup [PolicyOutInterceptor]
>  pre-logical [HolderOutInterceptor, SwAOutInterceptor,  
> WrapperClassOutInterceptor, SoapHeaderOutFilterInterceptor]
>  post-logical [SoapPreProtocolOutInterceptor]
>  prepare-send [MessageSenderInterceptor]
>  pre-stream [AttachmentOutInterceptor, StaxOutInterceptor]
>  write [SoapOutInterceptor]
>  marshal [BareOutInterceptor]
>
>
> ChainInitiationObserver.onMessage:
>       phaseChain.toString()
> Chain org.apache.cxf.phase.PhaseInterceptorChain@32e6e42e. Current  
> flow:
>  receive [PolicyInInterceptor, AttachmentInInterceptor]
>  post-stream [StaxInInterceptor]
>  post-protocol [JAXBAttachmentSchemaValidationHack]
>  unmarshal [URIMappingInterceptor, XMLMessageInInterceptor,  
> DocLiteralInInterceptor]
>  pre-logical [OneWayProcessorInterceptor]
>  post-logical [WrapperClassInInterceptor]
>  pre-invoke [HolderInInterceptor]
>  invoke [ServiceInvokerInterceptor]
>  post-invoke [OutgoingChainInterceptor]
>
>
> -----Original Message-----
> From: Freeman Fang [mailto:[email protected]]
> Sent: Thursday, May 05, 2011 6:33 PM
> To: [email protected]
> Subject: Re: jaxws:client with non-soap binding?
>
> Hi,
>
> Do your wsdl follow the wsdl_first_xml_wrapped example we shipped with
> kit? That's an example how to specify xmlbinding in wsdl.
> More importantly, for the binding part, you should have
> <xformat:binding />
>
> Freeman
>
>
> On 2011-5-6, at 上午1:24, Sven Zethelius wrote:
>
>> Is it possible to use the spring jaxws:client declaration with a non-
>> soap binding, like XMLBinding?
>>
>> I'm using cxf 2.3.2, and even though the WSDL is using namespace 
>> "http://schemas.xmlsoap.org/wsdl/http/
>> " it's falling back to the default binding of soap binding.  This
>> causes it to not use the right protocol when talking to the service
>> created by spring declaration of jaxws:endpoint, since it is
>> initialized with XMLBinding, given the same WSDL.
>>
>> Is this  a bug, or just not a supported configuration, or something
>> extra I have to set to specifically control the binding?
>>
>
> ---------------------------------------------
> Freeman Fang
>
> FuseSource
> Email:[email protected]
> Web: fusesource.com
> Twitter: freemanfang
> Blog: http://freemanfang.blogspot.com
> Connect at CamelOne May 24-26
> The Open Source Integration Conference
>
>
>
>
>
>
>
>

---------------------------------------------
Freeman Fang

FuseSource
Email:[email protected]
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
Connect at CamelOne May 24-26
The Open Source Integration Conference








Reply via email to