Talend ESB - Data service unable to process some requests

One Star

Talend ESB - Data service unable to process some requests

Hi
We have recently developed a data service using Talend ESB version 5.0.2, I have attached screenshots and the wsdl for the service. The service simply takes in 3 parameters, a module code, a year, and a semester number and returns some cdata to the consumer.
On testing the data service using SOAP UI the data service is returning the correct set of data for the parameters. The request that is generated automatically based on the WSDL within SOAP UI is as follows;
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.talend.org/service/">
<soapenv:Header/>
<soapenv:Body>
<ser:evasys2OperationRequest>
<module>ACC1001</module>
<academicyear>12</academicyear>
<semester>1</semester>
</ser:evasys2OperationRequest>
</soapenv:Body>
</soapenv:Envelope>
The problem that we are encountering though, is when request is being generated by a client, on this occasion .net, we are witnessing strange results from the data service. The .net request has been automatically generated using a class within the .net framework based on the attached WSDL. Below is an example of the request,
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<evasys2OperationRequest xmlns="http://www.talend.org/service/">
<module xmlns="">BIO1001,BIO1004,BIO1005</module>
<academicyear xmlns="">12</academicyear>
<semester xmlns="">1</semester>
</evasys2OperationRequest>
</s:Body>
</s:Envelope>
When this call is received by the data service, the request is successfully received, and Talend will try and process the request, however it will return an incorrect data set. For example although the module parameter is received through as BIO1001,BIO1004,BIO1005, when reviewing the wrapper.log file from our Talend ESB runtime environment, Talend is interpreting this header differently and searching for other modules e.g. ACC1001,ACC2002.
the main difference between the 2 request types is the positioning of the http://www.talend.org/service/ URL. In the SOAPUi generated request this is placed within the main envelope tag, whilst in the .net generated request its placed in the operationrequest tag. If we manually amend the request from .net and move the service URL to the first tag, the request will successfully complete and return the correct data.
The inconsistent behaviour only seems to occur when the service URL is not within the main envelope tag. Has anyone experienced this same behaviour whilst developing data services in Talend? Should the placement of the service URL effect the data services ability to correctly process the request?
Any advice on this would be gratefully received as this is quite urgent for us to be able to roll out this out as a live service.
Thanks,
Richie
Newcastle University
One Star

Re: Talend ESB - Data service unable to process some requests

WSDL text shown below

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.talend.org/service/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="evasys2" targetNamespace="http://www.talend.org/service/">
<wsdl:types>
<xsd:schema xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.talend.org/service/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.talend.org/service/">
<xsd:element name="evasys2OperationRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="module" type="xsd:string"/>
<xsd:element name="academicyear" type="xsd:int"></xsd:element>
<xsd:element name="semester" type="xsd:int"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="evasys2OperationResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="evasys2OperationResponse">
<wsdlSmiley Tongueart element="tns:evasys2OperationResponse" name="parameters"></wsdlSmiley Tongueart>
</wsdl:message>
<wsdl:message name="evasys2OperationRequest">
<wsdlSmiley Tongueart element="tns:evasys2OperationRequest" name="parameters"></wsdlSmiley Tongueart>
</wsdl:message>
<wsdlSmiley TongueortType name="evasys2PortType">
<wsdlSmiley Surprisedperation name="evasys2Operation">
<wsdl:input message="tns:evasys2OperationRequest"></wsdl:input>
<wsdlSmiley Surprisedutput message="tns:evasys2OperationResponse"></wsdlSmiley Surprisedutput>
</wsdlSmiley Surprisedperation>
</wsdlSmiley TongueortType>
<wsdl:binding name="evasys2Binding" type="tns:evasys2PortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdlSmiley Surprisedperation name="evasys2Operation">
<soapSmiley Surprisedperation soapAction="http://www.talend.org/service/evasys2Operation"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdlSmiley Surprisedutput>
<soap:body use="literal"/>
</wsdlSmiley Surprisedutput>
</wsdlSmiley Surprisedperation>
</wsdl:binding>
<wsdl:service name="evasys2">
<wsdlSmiley Tongueort binding="tns:evasys2Binding" name="evasys2Port">
<soap:address location="http://**.**.**.**:8040/services/evasys2"/>
</wsdlSmiley Tongueort>
</wsdl:service>
</wsdl:definitions>
Employee

Re: Talend ESB - Data service unable to process some requests

Hi Richard,
Thanks for contacting us via OTRS Ticketing system. We'v raised this issue with the R&D. There is a possible problem with the xmlmapping component in the DataService which is not able to process the namespace correctly. I'v also noticed that this issue is not reproducible in the latest TESB5.1.1.
In the meantime, is it possible for you to apply the workaround on modifying the .net request to place the namespace in the main envelope tag.
Thanks/Regards
One Star

Re: Talend ESB - Data service unable to process some requests

Hi,
I have managed to put a workaround in place within 5.0.2.
It appears the issues were occurring due to the prefix of a namespace in the txmlmap payload operation request and also a namespace variable for http://www.talend.org/service. The payload schema was based on the xml schema produced from the service WSDL, once this was imported into the map, it automatically generated the namespace references.
In order for the service to accept requests in the .net and the soap ui format, I removed the namespace references from the payload and output. I have then been able to run tests with both messages and appear to be getting the correct dataset returned. (I've attached screenshots of the txmlmap before and after the changes were made)
It would be good if we could get a permanent fix for 5.0.2 as we don't currently have the time available to upgrade up to 5.1.1 just yet.
Thanks,
Richard