You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/01/16 20:28:28 UTC

svn commit: r612547 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java

Author: dblevins
Date: Wed Jan 16 11:28:26 2008
New Revision: 612547

URL: http://svn.apache.org/viewvc?rev=612547&view=rev
Log:
Forcing the load of the PolicyConfigurationFactory in hopes to have the class cached and avoid future issues with not being able to load it.

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java?rev=612547&r1=612546&r2=612547&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/AbstractSecurityService.java Wed Jan 16 11:28:26 2008
@@ -31,6 +31,7 @@
 import javax.security.jacc.PolicyContext;
 import javax.security.jacc.EJBRoleRefPermission;
 import javax.security.jacc.EJBMethodPermission;
+import javax.security.jacc.PolicyConfigurationFactory;
 import java.security.AccessControlContext;
 import java.security.PrivilegedAction;
 import java.security.AccessController;
@@ -237,10 +238,26 @@
     }
 
     protected static void installJacc() {
+        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+
         final String providerKey = "javax.security.jacc.PolicyConfigurationFactory.provider";
-        if (System.getProperty(providerKey) == null){
-            System.setProperty(providerKey, JaccProvider.Factory.class.getName()) ;
+        try {
+            if (System.getProperty(providerKey) == null) {
+                System.setProperty(providerKey, JaccProvider.Factory.class.getName());
+                ClassLoader cl = JaccProvider.Factory.class.getClassLoader();
+                Thread.currentThread().setContextClassLoader(cl);
+            }
+
+            // Force the loading of the javax.security.jacc.PolicyConfigurationFactory.provider
+            // Hopefully it will be cached thereafter and ClassNotFoundExceptions thrown
+            // from the equivalent call in JaccPermissionsBuilder can be avoided.
+            PolicyConfigurationFactory.getPolicyConfigurationFactory();
+        } catch (Exception e) {
+            throw new IllegalStateException("Could not install JACC Policy Configuration Factory: " + System.getProperty(providerKey), e);
+        } finally {
+            Thread.currentThread().setContextClassLoader(contextClassLoader);
         }
+
 
         String policyProvider = System.getProperty("javax.security.jacc.policy.provider", JaccProvider.Policy.class.getName());
         try {