[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