Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

multiple input for txmlmap from joblets

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.


0683p000009M65K.png

 

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

Labels (4)
1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

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.

 

0683p000009M5ZO.png

 

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 🙂

View solution in original post

8 Replies
Anonymous
Not applicable
Author

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.

 

0683p000009M5ZO.png

 

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 🙂

Anonymous
Not applicable
Author

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 :

0683p000009M5c7.png

 

Thanks in advance,

Regards

Anonymous
Not applicable
Author

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.

 

https://community.talend.com/t5/Design-and-Development/solved-Could-not-generate-the-XML-stream-caus...

 

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 🙂

Anonymous
Not applicable
Author

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. 

 

0683p000009M5e8.png

Anonymous
Not applicable
Author

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 🙂

Anonymous
Not applicable
Author

> le log of the 3 joblets produce expected data.

Below the screenshoots of the 3 components :

0683p000009M5eD.png0683p000009M5eI.png0683p000009M5eN.png

 

I think the subjob is not triggered because no statistical data are on the subjob's rows : 

0683p000009M5by.png

Anonymous
Not applicable
Author

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 🙂

Anonymous
Not applicable
Author

Hi, 

 

I resolved the issue by doing a "onComponentOk" on one of the tHashOutput instead of "onSubjobOk" on the tESBProviderRequest.

 

0683p000009M5eh.png

 

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