Hello,
I'm trying to get up and running with Servicemix and XFire. I managed to
get a webservice up and exposed with Servicemix. I can send a soap message
to from a browser and I get a correct XML response back in. When I try to
generate a client from my Webservice interface, the wrong namespace
parameter gets generated and then servicemix spits out an error. Here are
the applicable pieces of information, is this a bug?
Servicemix webservice error:
org.codehaus.xfire.fault.XFireFault: Parameter {
http://watergaugeservice.wsdl.flare.gse.bae.com}getWaterGaugeDatain0
exist!
at org.codehaus.xfire.service.binding.AbstractBinding.read(
AbstractBinding.java:201)
at org.codehaus.xfire.service.binding.DocumentBinding.readMessage(
DocumentBinding.java:32)
at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(
SoapBodyHandler.java:42)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(
HandlerPipeline.java:131)
at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(
DefaultEndpoint.java:64)
at org.codehaus.xfire.transport.AbstractChannel.receive(
AbstractChannel.java:38)
at org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.doProcess(
Jsr181ExchangeProcessor.java:111)
at org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.process(
Jsr181ExchangeProcessor.java:66)
at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(
AsyncBaseLifeCycle.java:410)
at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(
BaseLifeCycle.java:43)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(
DeliveryChannelImpl.java:624)
at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(
AbstractFlow.java:169)
at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(
SedaFlow.java:177)
at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(
SedaQueue.java:227)
at org.apache.geronimo.connector.work.WorkerContext.run(
WorkerContext.java:291)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
Source)
at java.lang.Thread.run(Thread.java:595)
Client code:
String url = "http://localhost:8192/WaterGaugeService/";
XmlBeansServiceFactory xsf = new XmlBeansServiceFactory();
Service serviceModel = xsf.create(WaterGaugeServicePort.class);
WaterGaugeServicePort client =
(WaterGaugeServicePort) new XFireProxyFactory().create(serviceModel,
url);
return client.getWaterGaugeData("PEP");
And here is a correct soap request for your comparison to see what the
namespace is:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://watergugeservice.wsdl.flare.gse.bae.com">
<env:Body>
<tns:waterGaugeRequest>PEP</tns:waterGaugeRequest>
</env:Body>
</env:Envelope>
I hope something can shed some light on this for me. Thanks!