You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Andrey Poltavtsev <ap...@gmail.com> on 2014/07/29 11:38:44 UTC

Difference between "jms:" and "jms://" definition in JAXWS client spring configuration

Hello ALL,

I have JAXWS client definition:

     <jaxws:client 
xmlns:library="http://services.talend.org/demos/Library/1.0"
         id="callbackResponseClient" serviceName="library:LibraryConsumer"
         endpointName="library:LibraryConsumerPort" address="jms://"
serviceClass="org.talend.services.demos.library._1_0.LibraryConsumer">
     </jaxws:client>

The problem is - client selects HTTP transport ID during runtime.

I had look to: org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory:

     protected EndpointInfo createEndpointInfo(BindingInfo bindingInfo) 
throws BusException {
         // setup the transport ID for the soap over jms if there is 
only address information
         if (transportId == null && getAddress() != null
             && getAddress().startsWith("jms:") && 
!"jms://".equals(getAddress())) {
             // Set the transportId to be soap over jms transport
             transportId = 
SoapJMSConstants.SOAP_JMS_SPECIFICIATION_TRANSPORTID;
         }
        .....

We can see that it checks for "jms://" value of address and does NOT 
assign correct transport ID.

This issue can be fixed by adding of "wsdlLocation" property (with PATH 
to wsdl) to JAXWS client definition or replace "jms://" by "jms:"inside 
address url.

The question is - what is the rule of using "jms:" and "jms://" inside 
address property? (where can I find info about it)

Best regards, Andrey.