目的:用Talend将获取的数据用webservice的形式发布接口
实现:
1、在Services下增加我们的Webservice,里面定义要实现的方法以及输入输出等。
我们也可以通过Source来直接编辑WSDL文件,附demo代码:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="MyFirstService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.talend.org/service/" targetNamespace="http://www.talend.org/service/"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.talend.org/service/"> <xsd:element name="InputMessage"> <xsd:complexType> <xsd:sequence> <xsd:element name="Get_BWPM_Users"> <xsd:complexType> <xsd:sequence> <xsd:element name="UserName" type="xsd:string" /> <xsd:element name="LastLoginYM" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="OutputMessage"> <xsd:complexType> <xsd:sequence> <xsd:element name="BWPM_User" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="UserName" type="xsd:string" /> <xsd:element name="LastLoginDate" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="getDataRequest"> <wsdl:part name="parameters" element="tns:InputMessage"></wsdl:part> </wsdl:message> <wsdl:message name="getDataResponse"> <wsdl:part name="parameters" element="tns:OutputMessage"></wsdl:part> </wsdl:message> <wsdl:message name="getQABWPMUsersRequest"> <wsdl:part name="parameters" element="tns:getQABWPMUsers"></wsdl:part> </wsdl:message> <wsdl:message name="getQABWPMUsersResponse"> <wsdl:part name="parameters" element="tns:getQABWPMUsersResponse"></wsdl:part> </wsdl:message> <wsdl:portType name="MyFirstServicePortType"> <wsdl:operation name="getData"> <wsdl:input message="tns:getDataRequest"></wsdl:input> <wsdl:output message="tns:getDataResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyFirstServiceBinding" type="tns:MyFirstServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="getData"> <soap:operation soapAction="http://www.talend.org/service/getData" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyFirstService"> <wsdl:port name="MyFirstServicePort" binding="tns:MyFirstServiceBinding"> <soap:address location="http://localhost:8090/services/MyFirstService" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
2、实现方法调用的Job
注:这个Job需要以tESBProviderRequest开头,以tESBProviderResponse结尾
另外当tMSSqlInput取数为空时,就不会执行后面的tESBProviderResponse,导致调用返回错误信息,所以在tMSSqlInput处加了一个Run if(判断条件为:(Integer)globalMap.get("tMSSqlInput_1_NB_LINE") == 0),让查询数据为空时走另外的流程来返回tESBProviderResponse,这样查询没有结果就不会返回错误信息了!
3、Service加入Job
这样Webservice基本完成!