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

Announcements
Join us in Bucharest on Sept 18th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

SOAP WS - OnComponentError on tOracleInput

Hi,
I'm using the Talend Open Studio 5.6.1 and i'm trying to manage the error catching in a SOAP web service.
What i itried :
0683p000009MH8n.png


Unfortunately, when the tOracleInput is in error, it seems that it never go through the "OnComponentError" link and the WS simply returns a "Talend execution error".

What i noticed is when i set, in the XML Map, the value of "Lookup Model" to "load once", the error is catched at the start of the WS. Yet, when i set this value to "Reload at each row", i got the "Talent execution error".

0683p000009MH8r.png

What have i done wrong ? Why can't i catch the errors from the tOracleInput ?


Thanks for your time
Labels (4)
4 Replies
Anonymous
Not applicable
Author

Hi?
Is there any error message printed on console?
Have you tried to link tOracleInput to that other subjob with OnSubjobError to see if you can catch the error(DB connection failed...)?

Best regards
Sabrina
Anonymous
Not applicable
Author

Thanks for your reply.

I tried to use the "OnSubjobError" but it doesn't work either.

What i have in the console :
org.apache.cxf.interceptor.Fault: Talend job execution error: 
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:170)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:272)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:136)
at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:237)
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:355)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:319)
at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:65)
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:696)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
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: java.lang.RuntimeException: Talend job execution error:
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice$ESBProviderCallbackTalendJobWrapper_tESBProviderRequest_1.sendFault(Sales_Webservice_SalesPrice.java:1974)
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice$ESBProviderCallbackTalendJobWrapper_tESBProviderRequest_1.sendFaultByDefault(Sales_Webservice_SalesPrice.java:1983)
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice.tESBProviderRequest_1_LoopProcess(Sales_Webservice_SalesPrice.java:20397)
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice.runJobInTOS(Sales_Webservice_SalesPrice.java:23173)
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice.main(Sales_Webservice_SalesPrice.java:22905)
Caused by: esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice$TalendException
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice.tFixedFlowInput_1Process(Sales_Webservice_SalesPrice.java:9000)
at esb_electronet.sales_webservice_salesprice_1_2.Sales_Webservice_SalesPrice.tESBProviderRequest_1_LoopProcess(Sales_Webservice_SalesPrice.java:18460)
... 2 more
Anonymous
Not applicable
Author

This is not a solution, just a preliminary consideration - for a web service you have to provide any response in a single synchronous flow (so don't "tDie" on exception, do not use onSubjob, ...), the best option I see is using the tESBProviderFault  component.  https://help.talend.com/search/all?query=tESBProviderFault
You have to get the error (strange the - onComponentError is not invoked - don't you get any (even empty) response?

g.
Anonymous
Not applicable
Author

You are right gusto2. Actually, my web service is more complicated than that and the picture in my first post is only a simpler version in order to focus on the problem.
In my real web service, i have a tESBProviderFault instead of the tLogRow (which is a mistake here). The goal is to catch any errors and to send a XML fault response. I do have a XML fault response but with the "Talend Execution Job error" and i would like to set a custom response...