Hi All, I am getting an exception when requested resource does not exists. Exception is as below:
*09:43:25,123 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/axis].[CxfRestServlet]] (http--127.0.0.1-8080-1) Servlet.service() for servlet CxfRestServlet threw exception: * *java.lang.NoSuchMethodError: javax.ws.rs.ClientErrorException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status$Family;)Ljavax/ws/rs/core/Response;* * at javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127) [javax.ws.rs-api-2.0-m10.jar:2.0-m10]* * at org.apache.cxf.jaxrs.utils.SpecExceptions.toHttpException(SpecExceptions.java:110) [cxf-rt-frontend-jaxrs-2.7.11.jar:2.7.11]* * at org.apache.cxf.jaxrs.utils.ExceptionUtils.toHttpException(ExceptionUtils.java:149) [cxf-rt-frontend-jaxrs-2.7.11.jar:2.7.11]* * at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:477) [cxf-rt-frontend-jaxrs-2.7.11.jar:2.7.11]* * at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:196) [cxf-rt-frontend-jaxrs-2.7.11.jar:2.7.11]* * at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88) [cxf-rt-frontend-jaxrs-2.7.11.jar:2.7.11]* * at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:241) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]* * at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262) [cxf-rt-transports-http-2.7.11.jar:2.7.11]* * at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]* * at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]* * at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]* * at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]* * at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]* * at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]* * at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]* * at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]* * at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]* * at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]* * at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]* * at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]* * at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_15]* Everything is right till now. *My problem is the interceptor which I have when fault is occurs is not getting called when this exception is thrown. I have to free some resources when exception is occurring*. I have following configuration in cxf-servlet.xml for rest service. *<bean id="restserviceclass" class="com.test.webservice.WSRestService" />* * <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />* * <jaxrs:server address="/">* * <jaxrs:serviceBeans>* * <ref bean="restserviceclass" />* * </jaxrs:serviceBeans>* * <jaxrs:providers>* * <ref bean='jsonProvider' />* * <bean class="com.test.webservice.RestExceptionHandler" />* * <bean* * class="com.test.common.utils.JacksonJsonParamConverterProvider" />* * </jaxrs:providers>* * <jaxrs:inInterceptors>* * <bean class="com.test.webservice.RestAuthHandler">* * </bean>* * </jaxrs:inInterceptors>* * <jaxrs:inFaultInterceptors>* * <bean class="com.test.webservice.RestLogHandler" />* * </jaxrs:inFaultInterceptors>* * <jaxrs:outInterceptors>* * <bean class="com.test.webservice.RestLogHandler" />* * </jaxrs:outInterceptors>* * <jaxrs:outFaultInterceptors>* * <bean class="com.test.webservice.RestLogHandler" />* * </jaxrs:outFaultInterceptors>* * <jaxrs:features>* * <cxf:logging />* * </jaxrs:features>* * </jaxrs:server>* My *RestLogHandler *is responsible for freeing resources. But it is not getting called. Can anyone help me understand how to intercept this error so that I can free some resource? Thanks, Puneet.
