I have tried that as well, that didn't work :

@Provider
public class GTMGenericExceptionMapper implements
ExceptionMapper<Throwable> {

    public Response toResponse(Throwable th) {

        ErrorMessage errorMessage = new
ErrorMessage(th.getMessage(),500,"Example Message");
        return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                 .header("Content-Type", "application/json")
                .entity(errorMessage)
                .build();
    }
}

On Wed, Dec 23, 2015 at 9:35 PM, Sergey Beryozkin <sberyoz...@gmail.com>
wrote:

> Try registering ExceptionMapper<Throwable> and see what happens
>
> Cheers. Sergey
>
> On 23/12/15 16:03, Sumit Arora wrote:
>
>> Sergey,
>>
>> I tried using to write Exception Mapper :
>>
>> 1.Here MapperException - > IOException, ClientErrorException
>> public class GTMClientExceptionMapper implements
>> ExceptionMapper<MapperException > {
>>
>>      public Response toResponse(IOException ce) {
>>
>>          ErrorMessage errorMessage = new
>> ErrorMessage(ce.getMessage(),400,"Example : XYZ");
>>          return Response.status(Response.Status.NOT_FOUND)
>>                  .header("Content-Type", "application/json")
>>                  .entity(errorMessage)
>>                  .build();
>>      }
>> }
>>
>> But it doesn't work, other exception mapper stuff is working ?
>>
>> May you please tell me If there is something else I supposed to do ? :
>> JAXRSOutInterceptor.handleWriteException
>>
>> 2. Suggest me one example of this : Another option to try is to wrap
>> Jackson with a custom JAX-RS MessageBoryWriter and handle the write
>> exception there.
>>
>> 3.May you suggest any example of this :
>>
>> Finally, when working with AsyncResponse is used, one might want to
>> register
>>
>>
>> https://jax-rs-spec.java.net/nonav/2.0-rev-a/apidocs/javax/ws/rs/container/ConnectionCallback.html
>>
>> 'Sumit
>>
>>
>> On Wed, Dec 23, 2015 at 7:13 PM, Sergey Beryozkin <sberyoz...@gmail.com>
>> wrote:
>>
>> Hi
>>>
>>> JAXRSOutInterceptor.handleWriteException checks JAX-RS ExceptionMapper so
>>> perhaps you can intercept that Exception and return Response with the
>>> code
>>> only from this exception mapper.
>>>
>>> Another option to try is to wrap Jackson with a custom JAX-RS
>>> MessageBoryWriter and handle the write exception there.
>>>
>>> Finally, when working with AsyncResponse is used, one might want to
>>> register
>>>
>>>
>>>
>>> https://jax-rs-spec.java.net/nonav/2.0-rev-a/apidocs/javax/ws/rs/container/ConnectionCallback.html
>>>
>>> HTH, Sergey
>>>
>>> On 23/12/15 11:47, Sumit Arora wrote:
>>>
>>> Hi All,
>>>>
>>>> I have made a  web application, which uses Apache CXF on backend. In
>>>> many
>>>> situation - Client(user) uses the web application to fetch some data to
>>>> view ( say click on button) which  CXF web service provide from the
>>>> backend, But Client closes the browser, however the cxf web service was
>>>> busy to bring the data. So on logs it shows : ClientAbortException. This
>>>> behaviour is correct. Its fine.
>>>>
>>>> But I need the help on following :
>>>>
>>>> Is there any way to catch such exception in the CXF webservice code and
>>>> logs the customized error message, rather showing complete logs( as
>>>> below)
>>>> ? If Client has aborted the connection then is there any way to handle
>>>> such
>>>> situation and act accordingly?
>>>>
>>>>
>>>> [http-bio-8080-exec-2:ERROR] org.apache.cxf.jaxrs.utils.JAXRSUtils:
>>>> Problem
>>>> with writing the data, class java.util.ArrayList, ContentType:
>>>> application/json
>>>> [http-bio-8080-exec-2:WARN] org.apache.cxf.phase.PhaseInterceptorChain:
>>>> Interceptor for {http://X.X.X.X }GTMDataServiceEndPointImpl
>>>> <http://X.X.X.X/%7DGTMDataServiceEndPointImpl> has thrown exception,
>>>>
>>>> unwinding now
>>>> org.apache.cxf.interceptor.Fault
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleWriteException(JAXRSOutInterceptor.java:363)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:266)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleWriteException(JAXRSOutInterceptor.java:365)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:266)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:117)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:80)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:81)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>> at
>>>>
>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>>>> at
>>>> org.apache.tomcat.util.net
>>>> .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>> at
>>>>
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>>>> at
>>>>
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>>>> at java.lang.Thread.run(Thread.java:695)
>>>> Caused by: ClientAbortException:  java.net.SocketException: Broken pipe
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413)
>>>> at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
>>>> at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438)
>>>> at
>>>> org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
>>>> at
>>>> org.apache.cxf.io
>>>> .AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:51)
>>>> at
>>>> org.apache.cxf.io
>>>> .CacheAndWriteOutputStream.write(CacheAndWriteOutputStream.java:80)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:1731)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1070)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:426)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:578)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.writeMessageBody(JAXRSUtils.java:1363)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:244)
>>>> ... 33 more
>>>> Caused by: java.net.SocketException: Broken pipe
>>>> at java.net.SocketOutputStream.socketWrite0(Native Method)
>>>> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
>>>> at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215)
>>>> at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
>>>> at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:117)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
>>>> at org.apache.coyote.Response.doWrite(Response.java:517)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:408)
>>>> ... 46 more
>>>> [http-bio-8080-exec-2:ERROR] org.apache.cxf.jaxrs.utils.JAXRSUtils:
>>>> Problem
>>>> with writing the data, class
>>>> com.zimperium.gtm.endpoint.model.ErrorMessage,
>>>> ContentType: application/json
>>>> [http-bio-8080-exec-2:WARN] org.apache.cxf.phase.PhaseInterceptorChain:
>>>> Interceptor for {http://X.X.X.X }GTMDataServiceEndPointImpl
>>>> <http://X.X.X.X/%7DGTMDataServiceEndPointImpl> has thrown exception,
>>>>
>>>> unwinding now
>>>> org.apache.cxf.interceptor.Fault
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleWriteException(JAXRSOutInterceptor.java:363)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:266)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleWriteException(JAXRSOutInterceptor.java:365)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:266)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:117)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:80)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSDefaultFaultOutInterceptor.handleMessage(JAXRSDefaultFaultOutInterceptor.java:61)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:371)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:81)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>> at
>>>>
>>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>>>> at
>>>> org.apache.tomcat.util.net
>>>> .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>> at
>>>>
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>>>> at
>>>>
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>>>> at java.lang.Thread.run(Thread.java:695)
>>>> Caused by: ClientAbortException:  java.net.SocketException: Broken pipe
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413)
>>>> at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
>>>> at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438)
>>>> at
>>>> org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
>>>> at
>>>> org.apache.cxf.io
>>>> .AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:51)
>>>> at
>>>> org.apache.cxf.io
>>>> .CacheAndWriteOutputStream.write(CacheAndWriteOutputStream.java:80)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:1731)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1070)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:426)
>>>> at
>>>>
>>>>
>>>> com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:578)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.writeMessageBody(JAXRSUtils.java:1363)
>>>> at
>>>>
>>>>
>>>> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:244)
>>>> ... 36 more
>>>> Caused by: java.net.SocketException: Broken pipe
>>>> at java.net.SocketOutputStream.socketWrite0(Native Method)
>>>> at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
>>>> at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215)
>>>> at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
>>>> at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:117)
>>>> at
>>>>
>>>>
>>>> org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
>>>> at org.apache.coyote.Response.doWrite(Response.java:517)
>>>> at
>>>>
>>>>
>>>> org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:408)
>>>> ... 49 more
>>>>
>>>> Process finished with exit code 137
>>>>
>>>> {http://X.X.X.X } - It was package name string ,which I hve replaced
>>>> with
>>>> X.X.X.X....
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>
>>> --
>>> Sergey Beryozkin
>>>
>>> Talend Community Coders
>>> http://coders.talend.com/
>>>
>>>
>>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>

Reply via email to