[jboss-cvs] JBossAS SVN: r86856 - projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Apr 6 12:04:27 EDT 2009


Author: jesper.pedersen
Date: 2009-04-06 12:04:27 -0400 (Mon, 06 Apr 2009)
New Revision: 86856

Added:
   projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/SecurityActions.java
Modified:
   projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/Main.java
Log:
[JBJCA-89] Standalone profile

Modified: projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/Main.java
===================================================================
--- projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/Main.java	2009-04-06 16:03:19 UTC (rev 86855)
+++ projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/Main.java	2009-04-06 16:04:27 UTC (rev 86856)
@@ -38,6 +38,7 @@
 
 /**
  * The main class for JBoss JCA standalone
+ * @author <a hef="mailto:jesper.pedersen">Jesper Pedersen</a>
  */
 public class Main
 {
@@ -59,19 +60,31 @@
    {
       try
       {
-         String currentDirectory = new File(".").toURI().toURL().toString();
+         String home = SecurityActions.getSystemProperty("jboss.jca.home");
+         File root = null;
 
-         File root = new File(new URI(currentDirectory.substring(0, currentDirectory.lastIndexOf("bin"))));
+         if (home != null)
+         {
+            root = new File(new URI(home));
+         }
+         else
+         {
+            home = new File(".").toURI().toURL().toString();
+            root = new File(new URI(home.substring(0, home.lastIndexOf("bin"))));
+         }
 
-         ClassLoader parent = Thread.currentThread().getContextClassLoader();
+         File libDirectory = new File(root, "/lib/");
+         File configDirectory = new File(root, "/server/jca/conf/");
 
-         URL[] libUrls = getUrls(new File(root, "/lib/"));
-         URL[] confUrls = getUrls(new File(root, "/server/jca/conf/"));
+         ClassLoader parent = SecurityActions.getThreadContextClassLoader();
 
+         URL[] libUrls = getUrls(libDirectory);
+         URL[] confUrls = getUrls(configDirectory);
+
          URL[] urls = mergeUrls(libUrls, confUrls);
 
          URLClassLoader classLoader = new URLClassLoader(urls, parent);
-         Thread.currentThread().setContextClassLoader(classLoader);
+         SecurityActions.setThreadContextClassLoader(classLoader);
 
          Class serverLoaderClass = Class.forName("org.jboss.bootstrap.ServerLoader", true, classLoader);
          Method serverLoaderMethodLoad = serverLoaderClass.getDeclaredMethod("load", ClassLoader.class); 
@@ -85,16 +98,18 @@
          Field serverConfigFieldHomeDir = serverConfigClass.getDeclaredField("HOME_DIR");
          Field serverConfigFieldServerName = serverConfigClass.getDeclaredField("SERVER_NAME");
 
-         Properties props = new Properties(System.getProperties());
+         SecurityActions.setSystemProperty("xb.builder.useUnorderedSequence", "true");
+
+         Properties props = new Properties(SecurityActions.getSystemProperties());
          props.put((String)serverConfigFieldHomeUrl.get(null), root.toURI().toURL().toString());
          props.put((String)serverConfigFieldHomeDir.get(null), root.getAbsolutePath());
          props.put((String)serverConfigFieldServerName.get(null), "jca");
 
-         System.setProperty("jboss.lib.url", root.toURI().toURL().toString());
+         props.put("jboss.lib.url", libDirectory.toURI().toURL().toString());
 
-         String loggingManager = System.getProperty("java.util.logging.manager");
+         String loggingManager = props.getProperty("java.util.logging.manager");
          if (loggingManager == null)
-            System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
+            props.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
 
          Constructor serverLoaderConstructor = serverLoaderClass.getDeclaredConstructor(Properties.class); 
          Object serverLoader = serverLoaderConstructor.newInstance(props);

Added: projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/SecurityActions.java
===================================================================
--- projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/SecurityActions.java	                        (rev 0)
+++ projects/jboss-jca/trunk/standalone/src/main/java/org/jboss/jca/standalone/SecurityActions.java	2009-04-06 16:04:27 UTC (rev 86856)
@@ -0,0 +1,120 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.jca.standalone;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.Properties;
+
+/**
+ * Privileged Blocks
+ * @author <a hef="mailto:jesper.pedersen">Jesper Pedersen</a>
+ */
+class SecurityActions
+{ 
+   /**
+    * Constructor
+    */
+   private SecurityActions()
+   {
+   }
+
+   /**
+    * Get the thread context class loader
+    * @return The class loader
+    */
+   static ClassLoader getThreadContextClassLoader()
+   {
+      return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction<Object>() 
+      {
+         public Object run()
+         {
+            return Thread.currentThread().getContextClassLoader();
+         }
+      });
+   }
+
+   /**
+    * Set the thread context class loader
+    * @param cl The class loader
+    */
+   static void setThreadContextClassLoader(final ClassLoader cl)
+   {
+      AccessController.doPrivileged(new PrivilegedAction<Object>() 
+      {
+         public Object run()
+         {
+            Thread.currentThread().setContextClassLoader(cl);
+            return null;
+         }
+      });
+   }
+
+   /**
+    * Get the system properties
+    * @return The properties
+    */
+   static Properties getSystemProperties()
+   {
+      return (Properties)AccessController.doPrivileged(new PrivilegedAction<Object>() 
+      {
+         public Object run()
+         {
+            return System.getProperties();
+         }
+      });
+   }
+
+   /**
+    * Get a system property
+    * @param name The property name
+    * @return The property value
+    */
+   static String getSystemProperty(final String name)
+   {
+      return (String)AccessController.doPrivileged(new PrivilegedAction<Object>() 
+      {
+         public Object run()
+         {
+            return System.getProperty(name);
+         }
+      });
+   }
+
+   /**
+    * Set a system property
+    * @param name The property name
+    * @param value The property value
+    */
+   static void setSystemProperty(final String name, final String value)
+   {
+      AccessController.doPrivileged(new PrivilegedAction<Object>() 
+      {
+         public Object run()
+         {
+            System.setProperty(name, value);
+            return null;
+         }
+      });
+   }
+}




More information about the jboss-cvs-commits mailing list