You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Sergey Beryozkin <sb...@gmail.com> on 2014/09/01 17:19:42 UTC
Re: Avoid stacktrace in response when error occurs
Hi
On 30/08/14 23:54, las wrote:
> I am using ExceptionMapper to handle all the exceptions. I am not sure how to
> handle if any java.lang.Error occurs and how to send a meaningful response
> to the client?
>
I think that Error exceptions are wrapped into RuntimeException as far
as I can see, try registering ExceptionMapper<RuntimeException>, can you
try it please
Cheers, Sergey
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
Re: Avoid stacktrace in response when error occurs
Posted by las <la...@gmail.com>.
I understand ExceptionMapper<ServerErrorException> gets invoked when there
are 500 errors. I am a server and am not sure when does it get called? Is
there anyway i can simulate?
--
View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748352.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: Avoid stacktrace in response when error occurs
Posted by Sergey Beryozkin <sb...@gmail.com>.
On 01/09/14 18:24, las wrote:
> Yes, that worked, didn't think of that, my bad.
>
> I found another issue, where only for ClientErrorException, i need to set
> header whereas for other types, i dont have to.
>
> return Response.status(Response.Status.NOT_FOUND).header("Content-Type",
> "application/json")
Can you clarify please ? Why do you need to set this header at all ?
Regarding your question about ServerErrorException, JAX-RS 2.0
introduces few specific exception classes representing individual well
known errors like 500 (InternalServerErrorException) and exceptions like
ServerErrorException which can represent all of 500+ errors.
For ex, you can use WebApplicationException(500) (the 'legacy' style),
InternalServerErrorException, and ServerErrorException to represent 500
HTH, Sergey
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748351.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
Re: Avoid stacktrace in response when error occurs
Posted by las <la...@gmail.com>.
Yes, that worked, didn't think of that, my bad.
I found another issue, where only for ClientErrorException, i need to set
header whereas for other types, i dont have to.
return Response.status(Response.Status.NOT_FOUND).header("Content-Type",
"application/json")
--
View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748351.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: Avoid stacktrace in response when error occurs
Posted by Sergey Beryozkin <sb...@gmail.com>.
Have you tried ExceptionMapper<Throwable> ?
Cheers, Sergey
On 01/09/14 18:04, las wrote:
> HTTP Status 500 - org.apache.cxf.interceptor.Fault: Requested array size
> exceeds VM limit
>
> type Exception report
>
> message org.apache.cxf.interceptor.Fault: Requested array size exceeds VM
> limit
>
> description The server encountered an internal error that prevented it from
> fulfilling this request.
>
> exception
>
> java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Requested
> array size exceeds VM limit
>
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
>
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:371)
>
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
>
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
> root cause
>
> org.apache.cxf.interceptor.Fault: Requested array size exceeds VM limit
>
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
>
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:129)
> org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:211)
> org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)
>
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
>
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
>
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
>
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
> root cause
>
> java.lang.OutOfMemoryError: Requested array size exceeds VM limit
> ExampleServiceImpl.getServerError(ExampleServiceImpl.java:16)
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> java.lang.reflect.Method.invoke(Method.java:606)
>
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:181)
>
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97)
> org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:211)
> org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)
>
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
>
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
>
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
>
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
>
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>
>
>
>
> <jaxrs:providers>
> <bean
> class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
> <bean class="RuntimeExceptionMapper" />
> <bean class="ClientExceptionMapper" />
> <bean class="ServerExceptionMapper" />
> </jaxrs:providers>
>
>
> Thanks.
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748348.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
Re: Avoid stacktrace in response when error occurs
Posted by las <la...@gmail.com>.
HTTP Status 500 - org.apache.cxf.interceptor.Fault: Requested array size
exceeds VM limit
type Exception report
message org.apache.cxf.interceptor.Fault: Requested array size exceeds VM
limit
description The server encountered an internal error that prevented it from
fulfilling this request.
exception
java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Requested
array size exceeds VM limit
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:371)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
org.apache.cxf.interceptor.Fault: Requested array size exceeds VM limit
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:129)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:211)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
ExampleServiceImpl.getServerError(ExampleServiceImpl.java:16)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:181)
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:211)
org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:211)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
<jaxrs:providers>
<bean
class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
<bean class="RuntimeExceptionMapper" />
<bean class="ClientExceptionMapper" />
<bean class="ServerExceptionMapper" />
</jaxrs:providers>
Thanks.
--
View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748348.html
Sent from the cxf-user mailing list archive at Nabble.com.
Re: Avoid stacktrace in response when error occurs
Posted by Sergey Beryozkin <sb...@gmail.com>.
Can you post a relevant fragment of the stack trace, would like to see
where it escapes from.
Sergey
On 01/09/14 16:51, las wrote:
> I have ExceptionMapper<RuntimeException>, I simulated OutOfMemoryError and
> it didnt work.
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748346.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
Re: Avoid stacktrace in response when error occurs
Posted by las <la...@gmail.com>.
I have ExceptionMapper<RuntimeException>, I simulated OutOfMemoryError and
it didnt work.
--
View this message in context: http://cxf.547215.n5.nabble.com/Avoid-stacktrace-in-response-when-error-occurs-tp5748315p5748346.html
Sent from the cxf-user mailing list archive at Nabble.com.