Hi all,
When I implement the WSDL usage for SOAP/JMS, I encountered an exception.
I create an service and invoke it using wsdl-first.

If the wsdl file looks like this[1] :
<wsdl:definitions>
<wsdl:service name="JMSGreeterService">
<wsdl:port binding="tns:JMSGreeterPortBinding" name="GreeterPort">
<soap:address
location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;jndiConnectionFactoryName=ConnectionFactory&amp;jndiURL=tcp://localhost:61616&amp;targetService=greeterService"
/>
<soapjms:timeToLive>1000</soapjms:timeToLive>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

This service works well.

But if the wsdl file looks like this[2] :
<wsdl:definitions>
<wsdl:service name="JMSGreeterService">
<wsdl:port binding="tns:JMSGreeterPortBinding" name="GreeterPort">
<soapjms:timeToLive>1000</soapjms:timeToLive>
<soap:address
location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;jndiConnectionFactoryName=ConnectionFactory&amp;jndiURL=tcp://localhost:61616&amp;targetService=greeterService"
/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

The service is created correctly, but there is an error happen when I
invoke this service.
By debugging, I find that JMSTransportFactory.getConduit(EndpointInfo
endpointInfo, EndpointReferenceType target)'s target parameter is null.
It should be
"jms:jndi:dynamicQueues/test.cxf.jmstransport.queue?jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;jndiConnectionFactoryName=ConnectionFactory&amp;jndiURL=tcp://localhost:61616&amp;targetService=greeterService".

I think there are someting wrong with port parsing in wsdl.
Any ideas?

best regards
liu

Reply via email to