Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
Here, i have a job exposing a web-service SOAp that call 2 backend and a database request (note that i put them in joblets for reusability purpose). My problem is that i cannot inject the 3 results in a txmap to build the final result and send it in my tESBprovider response.
I'm a newbie in talend, all i know is txmap wait for lookup rows for the two other inputs. Maybe my design is not good for this use case.
Regards
Hi,
Since your job flow is trying to join the joblet output in same subjob, its creating cyclic dependency.
So store the data of each Joblet to a tHashOutput and then read the data from there in next subjob. A simple example is as shown below.
In case, the Hash components are note there in Palette, please add them by going to File-> Edit Project Properties -> Designer -> Palette and add the components.
Make sure to clear the cache of Hash after last read from each tHashInput component.
Warm Regards,
Nikhil Thampi
Please appreciate our Talend community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂
Hi,
Since your job flow is trying to join the joblet output in same subjob, its creating cyclic dependency.
So store the data of each Joblet to a tHashOutput and then read the data from there in next subjob. A simple example is as shown below.
In case, the Hash components are note there in Palette, please add them by going to File-> Edit Project Properties -> Designer -> Palette and add the components.
Make sure to clear the cache of Hash after last read from each tHashInput component.
Warm Regards,
Nikhil Thampi
Please appreciate our Talend community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂
Hello @nthampi
Thanks you for your solution, it's works partially,
My blocking-point now is the exception below :
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:118) at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:65) at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:53) at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:137) 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:90) 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:267) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:247) at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:79) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1116) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) at org.eclipse.jetty.server.Server.handle(Server.java:534) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) 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:793) at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:722) at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:648) at org.apache.cxf.databinding.source.XMLStreamDataWriter.write(XMLStreamDataWriter.java:114) ... 28 more
It seems like the data in my tHashInput was already read. Here my job :
Thanks in advance,
Regards
Hi,
The above issue has nothing to do with your tHashInput. Could you please check the first XMLMap input and output and it will help to identify the issue. Please also refer the below community post for your reference.
Warm Regards,
Nikhil Thampi
Please appreciate our Talend community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂
Hi,
The point is that on my tHashInput i dont get any data when the onSubjobOk is triggered. See the screenshoot below. Note that i tested to put tLogRow on tHashOutput and i have the data there.
Hi,
Did you try to run the first SubJob by putting tLogrow instead of tHashOutput? If its still having issue while running with tLogrow, please check the txmlmap section. Now, if its working fine, could you please share the screen shots of three tHashOutput components?
Warm Regards,
Nikhil Thampi
Please appreciate our Talend community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂
> le log of the 3 joblets produce expected data.
Below the screenshoots of the 3 components :
I think the subjob is not triggered because no statistical data are on the subjob's rows :
Hi,
You are right. Since no data is present, the Hash is not getting initialized. A work around is to add a dummy additional record to Hash and in the data read stage, you can filter it out.
Warm Regards,
Nikhil Thampi
Please appreciate our Talend community members by giving Kudos for sharing their time for your query. If your query is answered, please mark the topic as resolved 🙂
Hi,
I resolved the issue by doing a "onComponentOk" on one of the tHashOutput instead of "onSubjobOk" on the tESBProviderRequest.
My concern is : if one tHashOutput spend lot of time to retrieves a response, will the subjob be triggered when his linked-to component is OK ?
Thanks you very much - your answers help me very well.
Regards