2016-03-31 12 views
0

Ich versuche, zwei Antworten mit tHashOutput -> tHashInput zusammenzufassen, also versuche ich zunächst, es für einfache, einfache Arbeit zu verwenden, und es funktioniert nicht. Ich sende über Soap UI Anfrage mit ID, dann basierend auf dieser ID retrive Namen aus der DB und zeige es als Ergebnis. Daten werden in hashOutput eingefügt, sind aber nicht in hashInput enthalten.Verwendung von tHashOutput und tHashInput in Talend esb

WSDL:

<?xml version="1.0" encoding="utf-8" standalone="no"?> 
<wsdl:definitions name="customerSoap" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:s="http://www.w3.org/2001/XMLSchema" 
    xmlns:tns="http://www.talend.org/service/" 
    targetNamespace="http://www.talend.org/service/"> 
    <wsdl:types> 
    <s:schema elementFormDefault="qualified" targetNamespace="http://www.talend.org/service/"> 
     <s:element name="getCustomer"> 
     <s:complexType> 
      <s:sequence> 
      <s:element name="customerId" type="s:integer"/> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="getCustomerResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element name="getCustomerResult" type="s:string"/> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="getCustomerName"> 
     <s:complexType> 
      <s:sequence> 
       <s:element name="customerId" type="s:integer"></s:element> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="getCustomerNameResponse"> 
     <s:complexType> 
      <s:sequence> 
       <s:element name="customerNameResult" type="s:string"></s:element> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
    <s:element name="getCustomerAddress"> 
     <s:complexType> 
      <s:sequence> 
      <s:element name="customerId" type="s:integer"></s:element> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="getCustomerAddressResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element name="customerAddressResult" type="s:string"></s:element> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
    </s:schema> 
    </wsdl:types> 
    <wsdl:message name="getCustomerRequest"> 
    <wsdl:part element="tns:getCustomer" name="parameters"/> 
    </wsdl:message> 
    <wsdl:message name="getCustomerResponse"> 
    <wsdl:part element="tns:getCustomerResponse" name="parameters"/> 
    </wsdl:message> 
    <wsdl:message name="getCustomerNameRequest"> 
    <wsdl:part name="parameters" element="tns:getCustomerName"></wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="getCustomerNameResponse"> 
    <wsdl:part name="parameters" element="tns:getCustomerNameResponse"></wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="getCustomerAddressRequest"> 
    <wsdl:part name="parameters" element="tns:getCustomerAddress"></wsdl:part> 
    </wsdl:message> 
    <wsdl:message name="getCustomerAddressResponse"> 
    <wsdl:part name="parameters" element="tns:getCustomerAddressResponse"></wsdl:part> 
    </wsdl:message> 
    <wsdl:portType name="customerSoap"> 
    <wsdl:operation name="getCustomer"> 
     <wsdl:input message="tns:getCustomerRequest"/> 
     <wsdl:output message="tns:getCustomerResponse"/> 
    </wsdl:operation> 
    <wsdl:operation name="getCustomerName"> 
     <wsdl:input message="tns:getCustomerNameRequest"/> 
     <wsdl:output message="tns:getCustomerNameResponse"/> 
    </wsdl:operation> 
    <wsdl:operation name="getCustomerAddress"> 
     <wsdl:input message="tns:getCustomerAddressRequest"/> 
     <wsdl:output message="tns:getCustomerAddressResponse"/> 
    </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="customerSoap" type="tns:customerSoap"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="getCustomer"> 
     <soap:operation soapAction="http://www.talend.org/service/getCustomer" /> 
     <wsdl:input> 
      <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
      <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="getCustomerName"> 
     <soap:operation soapAction="http://www.talend.org/service/getCustomer" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="getCustomerAddress"> 
     <soap:operation soapAction="http://www.talend.org/service/getCustomer" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="airport"> 
    <wsdl:port binding="tns:customerSoap" name="customerSoap"> 
     <soap:address location="http://localhost:8090/esb/customerSoap"/> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

Ausnahme:

Starting job customerSoap_getCustomerName at 10:31 31/03/2016. 

[statistics] connecting to socket on port 3524 
[statistics] connected 
mar 31, 2016 10:31:04 AM org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL 
INFO: Creating Service {http://www.talend.org/service/}airport from WSDL: C:/Users/VKAROL/Downloads/TESB/Studio/workspace/FINAL10/services/customerSoap_0.1.wsdl 
mar 31, 2016 10:31:05 AM org.apache.cxf.endpoint.ServerImpl initDestination 
INFO: Setting the server's publish address to be http://localhost:8090/esb/customerSoap 
2016-03-31 10:31:05.163:INFO:oejs.Server:jetty-8.1.14.v20131031 
2016-03-31 10:31:05.221:INFO:oejs.AbstractConnector:Started [email protected]:8090 
web service [endpoint: http://localhost:8090/esb/customerSoap] published 
mar 31, 2016 10:31:08 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging 
WARNING: Interceptor for {http://www.talend.org/service/}airport#{http://www.talend.org/service/}getCustomerName has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: Could not generate the XML stream caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog 
at [row,col {unknown-source}]: [2,0]. 
    at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:94) 
    at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:54) 
    at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:48) 
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:136) 
    at org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) 
    at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:83) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) 
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251) 
    at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:234) 
    at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1024) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
    at org.eclipse.jetty.server.Server.handle(Server.java:370) 
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) 
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982) 
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043) 
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) 
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog 
at [row,col {unknown-source}]: [2,0] 
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:685) 
    at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2141) 
    at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047) 
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1131) 
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:771) 
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:701) 
    at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:625) 
    at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:91) 
    ... 28 more 

Hier ist, wie meine Arbeit wie folgt aussieht: enter image description here

Mein tXMLMap: enter image description here

Danke für die Hilfe .

Antwort

1

Antwort von Shong von Talend-Team auf dem offiziellen Forum:

Hallo Ich denke, das liegt daran, dass ‚immer wieder hören‘ Box wird geprüft, auf tESBRequestProvider, tHashInput mit onsubjobOK verknüpft wird nie funktionieren. So beheben Sie es, um den Job Design ändern: tESBRequestProvider ..... tHashOutput - oncomponentok-tHashInput - main - tESBResponseProvider Grüße Shong