[jboss-cvs] JBossAS SVN: r92263 - projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Aug 12 10:09:37 EDT 2009


Author: anil.saldhana at jboss.com
Date: 2009-08-12 10:09:36 -0400 (Wed, 12 Aug 2009)
New Revision: 92263

Modified:
   projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java
   projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/SecurityActions.java
Log:
SECURITY-435: cache JAXBContext in JBossPDP

Modified: projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java	2009-08-12 14:04:23 UTC (rev 92262)
+++ projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/JBossPDP.java	2009-08-12 14:09:36 UTC (rev 92263)
@@ -101,7 +101,27 @@
    private org.jboss.security.xacml.sunxacml.PDP policyDecisionPoint = null;
    
    private Lock lock = new ReentrantLock();
+   
+   /**
+    * JAXBContext is thread safe and very expensive to create
+    */
+   private static JAXBContext jaxbContext;
 
+   static
+   {
+      try
+      {
+         jaxbContext = JAXBContext.newInstance("org.jboss.security.xacml.jaxb");
+      }
+      catch (JAXBException e)
+      {
+         throw new RuntimeException(e);
+      }
+   
+      //Following is an optimization for Sun VMs which does affect other VMs
+      SecurityActions.setSystemProperty("com.sun.xml.bind.v2.runtime.JAXBContextImpl.fastBoot", "true");
+   }
+   
    /**
     * CTR
     */
@@ -429,9 +449,8 @@
    private void createUnMarshaller()
    {
       try
-      {
-         JAXBContext jc = JAXBContext.newInstance("org.jboss.security.xacml.jaxb");;
-         unmarshaller = jc.createUnmarshaller();
+      { 
+         unmarshaller = jaxbContext.createUnmarshaller();
       }catch(JAXBException je)
       {
          throw new RuntimeException(je);

Modified: projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/SecurityActions.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/SecurityActions.java	2009-08-12 14:04:23 UTC (rev 92262)
+++ projects/security/security-xacml/trunk/jboss-xacml/src/main/java/org/jboss/security/xacml/core/SecurityActions.java	2009-08-12 14:09:36 UTC (rev 92263)
@@ -58,4 +58,16 @@
          }
       });
    }
+   
+   static void setSystemProperty(final String key, final String value)
+   {
+      AccessController.doPrivileged(new PrivilegedAction<Object>()
+      {
+         public Object run()
+         {
+            System.setProperty(key, value);
+            return null;
+         }
+      });
+   }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list