You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by cl...@apache.org on 2010/01/18 00:55:47 UTC
svn commit: r900246 - in /cxf/branches/2.2.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
Author: cleclerc
Date: Sun Jan 17 23:55:46 2010
New Revision: 900246
URL: http://svn.apache.org/viewvc?rev=900246&view=rev
Log:
Merged revisions 900243 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r900243 | cleclerc | 2010-01-18 00:27:59 +0100 (Mon, 18 Jan 2010) | 1 line
[CXF-2622] clear threadlocal variables in JAXRSInInterceptor.handleFault() in case of exception
........
Modified:
cxf/branches/2.2.x-fixes/ (props changed)
cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 17 23:55:46 2010
@@ -1 +1 @@
-/cxf/trunk:900181
+/cxf/trunk:900181,900243
Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=900246&r1=900245&r2=900246&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/branches/2.2.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Sun Jan 17 23:55:46 2010
@@ -36,6 +36,7 @@
import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.impl.RequestPreprocessor;
import org.apache.cxf.jaxrs.impl.UriInfoImpl;
+import org.apache.cxf.jaxrs.lifecycle.ResourceProvider;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.model.OperationResourceInfo;
import org.apache.cxf.jaxrs.model.ProviderInfo;
@@ -58,6 +59,28 @@
super(Phase.UNMARSHAL);
}
+ @Override
+ public void handleFault(Message message) {
+ super.handleFault(message);
+
+ LOG.fine("Cleanup thread local variables");
+
+ Object rootInstance = message.getExchange().remove(JAXRSUtils.ROOT_INSTANCE);
+ Object rootProvider = message.getExchange().remove(JAXRSUtils.ROOT_PROVIDER);
+ if (rootInstance != null && rootProvider != null) {
+ try {
+ ((ResourceProvider)rootProvider).releaseInstance(message, rootInstance);
+ } catch (Throwable tex) {
+ LOG.warning("Exception occurred during releasing the service instance, " + tex.getMessage());
+ }
+ }
+ ProviderFactory.getInstance(message).clearThreadLocalProxies();
+ ClassResourceInfo cri = (ClassResourceInfo)message.getExchange().get(JAXRSUtils.ROOT_RESOURCE_CLASS);
+ if (cri != null) {
+ cri.clearThreadLocalProxies();
+ }
+ }
+
public void handleMessage(Message message) {
try {