<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ESB : get error trace (on subjob error) in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290968#M64197</link>
    <description>&lt;P&gt;Hello @Richard Hall​&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Late answer from me.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used a code I already have just to duplicate the output, sending it in the console and also in a global variable. (I use this code to duplicate out and err output in a txt file for my DI jobs, to keep a trace of Exceptions)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the modified code, based on what you proposed :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;First, &lt;/B&gt;&lt;A href="https://commons.io" alt="https://commons.io" target="_blank"&gt;&lt;B&gt;commons.io&lt;/B&gt;&lt;/A&gt;&lt;B&gt; must be imported :&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0695b00000PKPjzAAH.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/150434i3E062A8EDF7FE5A9/image-size/large?v=v2&amp;amp;px=999" role="button" title="0695b00000PKPjzAAH.png" alt="0695b00000PKPjzAAH.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;tJava_1&lt;/B&gt;&lt;/P&gt;&lt;P&gt;java.io.ByteArrayOutputStream baos = new ByteArrayOutputStream();&lt;/P&gt;&lt;P&gt;String utf8 = java.nio.charset.StandardCharsets.UTF_8.name();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;org.apache.commons.io.output.TeeOutputStream myOut = new org.apache.commons.io.output.TeeOutputStream(System.out, baos);&lt;/P&gt;&lt;P&gt;java.io.PrintStream ps = new java.io.PrintStream(myOut, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;System.setOut(ps);&lt;/P&gt;&lt;P&gt;System.setErr(ps);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;globalMap.put("baos", baos);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;tJavaFlex_2&lt;/B&gt;&lt;/P&gt;&lt;P&gt;java.io.ByteArrayOutputStream baos = ((java.io.ByteArrayOutputStream)globalMap.get("baos"));&lt;/P&gt;&lt;P&gt;String utf8 = java.nio.charset.StandardCharsets.UTF_8.name();&lt;/P&gt;&lt;P&gt;String data = baos.toString(utf8);&lt;/P&gt;&lt;P&gt;baos.reset();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;System.out.println("DATAAAAAAA : " + data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So the Exception is displayed as usual in the console, and also set in baos global var !&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Do you think the code is okay ?&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 14 Mar 2022 14:35:47 GMT</pubDate>
    <dc:creator>Alpha549</dc:creator>
    <dc:date>2022-03-14T14:35:47Z</dc:date>
    <item>
      <title>ESB : get error trace (on subjob error)</title>
      <link>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290966#M64195</link>
      <description>&lt;P&gt;Hello everyone, &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm testing something. Here is a simple job for a REST API :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0695b00000PKCj3AAH.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/150676iC39C58ED5AF6C157/image-size/large?v=v2&amp;amp;px=999" role="button" title="0695b00000PKCj3AAH.png" alt="0695b00000PKCj3AAH.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the configuration of the upper tJavaRow, to throw an Exception using int i = 1/0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0695b00000PKCjhAAH.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/146219iDE1977DE1C88CC99/image-size/large?v=v2&amp;amp;px=999" role="button" title="0695b00000PKCjhAAH.png" alt="0695b00000PKCjhAAH.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;From this point, we switch to the OnSubjobError branch.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The lower tRESTResponse : &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0695b00000PKCkkAAH.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/137877i81508D5C23F5E495/image-size/large?v=v2&amp;amp;px=999" role="button" title="0695b00000PKCkkAAH.png" alt="0695b00000PKCkkAAH.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I indeed get an error 500. Everything is ok.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the console I get the expected Exception : &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Exception in component tJavaRow_1 (api_err)&lt;/P&gt;&lt;P&gt;java.lang.ArithmeticException: / by zero&lt;/P&gt;&lt;P&gt;	at talend_jobs_ua.api_err_0_1.api_err.tRESTRequest_1_LoopProcess(api_err.java:2959)&lt;/P&gt;&lt;P&gt;	at talend_jobs_ua.api_err_0_1.api_err$RestServiceProviderImpl4TalendJob.processRequest(api_err.java:505)&lt;/P&gt;&lt;P&gt;	at talend_jobs_ua.api_err_0_1.api_err$RestServiceProviderImpl4TalendJob.hello(api_err.java:615)&lt;/P&gt;&lt;P&gt;	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;/P&gt;&lt;P&gt;	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)&lt;/P&gt;&lt;P&gt;	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;/P&gt;&lt;P&gt;	at java.base/java.lang.reflect.Method.invoke(Method.java:568)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:247)&lt;/P&gt;&lt;P&gt;	at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:79)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:190)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.Server.handle(Server.java:516)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)&lt;/P&gt;&lt;P&gt;	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)&lt;/P&gt;&lt;P&gt;	at java.base/java.lang.Thread.run(Thread.java:833)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;I would like to know if there is a way to get this stack trace in a global variable or something else ?&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;﻿&lt;/B&gt;&lt;/P&gt;&lt;P&gt;Thank you for you light !&lt;/P&gt;</description>
      <pubDate>Fri, 15 Nov 2024 23:07:38 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290966#M64195</guid>
      <dc:creator>Alpha549</dc:creator>
      <dc:date>2024-11-15T23:07:38Z</dc:date>
    </item>
    <item>
      <title>Re: ESB : get error trace (on subjob error)</title>
      <link>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290967#M64196</link>
      <description>&lt;P&gt;This method may work for you. You will need to test it thoroughly though. I've literally just tested this method on a theory that it would work. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the quick service I've knocked up.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0695b00000PKGRmAAP.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/144763i9A2515513161B4DF/image-size/large?v=v2&amp;amp;px=999" role="button" title="0695b00000PKGRmAAP.png" alt="0695b00000PKGRmAAP.png" /&gt;&lt;/span&gt;Notice the tJava_1 at the beginning. Here is the code for that......&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;java.io.ByteArrayOutputStream baos = &lt;B&gt;new&lt;/B&gt; ByteArrayOutputStream();&lt;/P&gt;&lt;P&gt;String utf8 = java.nio.charset.StandardCharsets.UTF_8.name();&lt;/P&gt;&lt;P&gt;System.setErr(&lt;B&gt;new&lt;/B&gt; java.io.PrintStream(baos, &lt;B&gt;true&lt;/B&gt;, utf8));&lt;/P&gt;&lt;P&gt;globalMap.put("baos", baos);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then, on an error, we go to the tJavaFlex_2 which has this code in the Main Code section....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;java.io.ByteArrayOutputStream baos = ((java.io.ByteArrayOutputStream)globalMap.get("baos"));&lt;/P&gt;&lt;P&gt;String utf8 = java.nio.charset.StandardCharsets.UTF_8.name();&lt;/P&gt;&lt;P&gt;String data = baos.toString(utf8);&lt;/P&gt;&lt;P&gt;baos.reset();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;row2.error = data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The tJavaFlex has an output column called error. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tested this and it sends the error message to my XML output for the tRestResponse reporting the error.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 12 Mar 2022 00:45:28 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290967#M64196</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2022-03-12T00:45:28Z</dc:date>
    </item>
    <item>
      <title>Re: ESB : get error trace (on subjob error)</title>
      <link>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290968#M64197</link>
      <description>&lt;P&gt;Hello @Richard Hall​&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Late answer from me.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used a code I already have just to duplicate the output, sending it in the console and also in a global variable. (I use this code to duplicate out and err output in a txt file for my DI jobs, to keep a trace of Exceptions)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the modified code, based on what you proposed :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;First, &lt;/B&gt;&lt;A href="https://commons.io" alt="https://commons.io" target="_blank"&gt;&lt;B&gt;commons.io&lt;/B&gt;&lt;/A&gt;&lt;B&gt; must be imported :&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0695b00000PKPjzAAH.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/150434i3E062A8EDF7FE5A9/image-size/large?v=v2&amp;amp;px=999" role="button" title="0695b00000PKPjzAAH.png" alt="0695b00000PKPjzAAH.png" /&gt;&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;tJava_1&lt;/B&gt;&lt;/P&gt;&lt;P&gt;java.io.ByteArrayOutputStream baos = new ByteArrayOutputStream();&lt;/P&gt;&lt;P&gt;String utf8 = java.nio.charset.StandardCharsets.UTF_8.name();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;org.apache.commons.io.output.TeeOutputStream myOut = new org.apache.commons.io.output.TeeOutputStream(System.out, baos);&lt;/P&gt;&lt;P&gt;java.io.PrintStream ps = new java.io.PrintStream(myOut, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;System.setOut(ps);&lt;/P&gt;&lt;P&gt;System.setErr(ps);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;globalMap.put("baos", baos);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;tJavaFlex_2&lt;/B&gt;&lt;/P&gt;&lt;P&gt;java.io.ByteArrayOutputStream baos = ((java.io.ByteArrayOutputStream)globalMap.get("baos"));&lt;/P&gt;&lt;P&gt;String utf8 = java.nio.charset.StandardCharsets.UTF_8.name();&lt;/P&gt;&lt;P&gt;String data = baos.toString(utf8);&lt;/P&gt;&lt;P&gt;baos.reset();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;System.out.println("DATAAAAAAA : " + data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So the Exception is displayed as usual in the console, and also set in baos global var !&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Do you think the code is okay ?&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 14 Mar 2022 14:35:47 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290968#M64197</guid>
      <dc:creator>Alpha549</dc:creator>
      <dc:date>2022-03-14T14:35:47Z</dc:date>
    </item>
    <item>
      <title>Re: ESB : get error trace (on subjob error)</title>
      <link>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290969#M64198</link>
      <description>&lt;P&gt;It looks OK, but I've not tested it. If it works, then go with it....after rigorous testing &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 14 Mar 2022 15:11:27 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290969#M64198</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2022-03-14T15:11:27Z</dc:date>
    </item>
    <item>
      <title>Re: ESB : get error trace (on subjob error)</title>
      <link>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290970#M64199</link>
      <description>&lt;P&gt;It work at first sight at least !&lt;/P&gt;&lt;P&gt;I think this will last !&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for you help @Richard Hall​&amp;nbsp;! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Topic solved&lt;/P&gt;</description>
      <pubDate>Mon, 14 Mar 2022 17:55:59 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/ESB-get-error-trace-on-subjob-error/m-p/2290970#M64199</guid>
      <dc:creator>Alpha549</dc:creator>
      <dc:date>2022-03-14T17:55:59Z</dc:date>
    </item>
  </channel>
</rss>

