You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/10/19 11:17:05 UTC

svn commit: r1186043 - /tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java

Author: markt
Date: Wed Oct 19 09:17:05 2011
New Revision: 1186043

URL: http://svn.apache.org/viewvc?rev=1186043&view=rev
Log:
Fix threading issue when setting accessibility

Modified:
    tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java

Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1186043&r1=1186042&r2=1186043&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Wed Oct 19 09:17:05 2011
@@ -186,8 +186,8 @@ public class DefaultInstanceManager impl
         for (AnnotationCacheEntry entry : annotations) {
             if (entry.getType() == AnnotationCacheEntryType.POST_CONSTRUCT) {
                 Method postConstruct = (Method) entry.getAccessibleObject();
-                boolean accessibility = postConstruct.isAccessible();
                 synchronized (postConstruct) {
+                    boolean accessibility = postConstruct.isAccessible();
                     postConstruct.setAccessible(true);
                     postConstruct.invoke(instance);
                     postConstruct.setAccessible(accessibility);
@@ -230,8 +230,8 @@ public class DefaultInstanceManager impl
         for (AnnotationCacheEntry entry : annotations) {
             if (entry.getType() == AnnotationCacheEntryType.PRE_DESTROY) {
                 Method preDestroy = (Method) entry.getAccessibleObject();
-                boolean accessibility = preDestroy.isAccessible();
                 synchronized (preDestroy) {
+                    boolean accessibility = preDestroy.isAccessible();
                     preDestroy.setAccessible(true);
                     preDestroy.invoke(instance);
                     preDestroy.setAccessible(accessibility);
@@ -576,8 +576,8 @@ public class DefaultInstanceManager impl
                 context.lookup(clazz.getName() + "/" + field.getName());
         }
 
-        accessibility = field.isAccessible();
         synchronized (field) {
+            accessibility = field.isAccessible();
             field.setAccessible(true);
             field.set(instance, lookedupResource);
             field.setAccessible(accessibility);
@@ -620,8 +620,8 @@ public class DefaultInstanceManager impl
                     clazz.getName() + "/" + getName(method));
         }
 
-        accessibility = method.isAccessible();
         synchronized (method) {
+            accessibility = method.isAccessible();
             method.setAccessible(true);
             method.invoke(instance, lookedupResource);
             method.setAccessible(accessibility);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org