alfresco-community-repo/source/java/org/alfresco/util/RuntimeSystemPropertiesSetter.java
Derek Hulley a55663b452 Merged V2.2 to HEAD
8049: Fix for WCM-1033: Only admin users can create web projects
   8051: Merged V2.1 to V2.2
      8006: Merged V2.1-A to V2.1 (Virtual Server fixes)
         7723: The JMX server connector is now lazily instantiated in the server context.
         7734: Fix for WCM-934.
         7735: The linkvalidation service now provides a public API
         7742: Possible fix for ACT #361
      8012: Merged V2.1-A to V2.1
         7749: Fix stack overflow
         7955: Fix for issue ADB-18 Forward slash '/' in username causes Advanced Search failure
         7975: AR-1832: Allow setting of timeout value in the Java webservices client
         7995: Include the alf_child_assoc.type_qname in the check for duplicate children.
   8052: Build fix
   8054: Merged V2.1 to V2.2
      8045: Patch fix to solve WCM-1051 - also reruns fixed patch on previously patched repos (see CHK-2143)
   8058: Fixed compilation issues following merge


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8466 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2008-03-07 13:39:01 +00:00

104 lines
4.4 KiB
Java

/*-----------------------------------------------------------------------------
* Copyright 2006 Alfresco Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program 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 General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*
* Author Jon Cox <jcox@alfresco.com>
* File RuntimeSystemPropertiesSetter.java
*----------------------------------------------------------------------------*/
package org.alfresco.util;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.core.Ordered;
/**
* Sets runtime JVM system properties for Spring Framework.
*
* This class is used by the Spring framework to inject system properties into
* the runtime environment (e.g.: alfresco.jmx.dir). The motivation for this
* is that certain values must be set within spring must be computed in advance
* for org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
* to work properly.
*
*/
public class RuntimeSystemPropertiesSetter
implements BeanFactoryPostProcessor, Ordered
{
private static org.apache.commons.logging.Log log=
org.apache.commons.logging.LogFactory.getLog(
RuntimeSystemPropertiesSetter.class );
// default: just before PropertyPlaceholderConfigurer
private int order = Integer.MAX_VALUE - 1;
public void RuntimeSystemPropertiesSetter() { }
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
throws BeansException
{
ClassLoader loader = Thread.currentThread().getContextClassLoader();
String path=null;
try
{
// Typically, the value of 'path' will be something like:
//
// $TOMCAT_HOME/webapps/alfresco/WEB-INF/classes/alfresco/alfresco-jmxrmi.password
// or: $TOMCAT_HOME/shared/classes/alfresco/alfresco-jmxrmi.password
//
// However, if WCM isn't installed there won't be a JMX password file.
// Therefore, while it's important to choke on bad paths, a missing
// password file must be acceptable -- it just means that WCM virtualization
// will be disabled later when org.alfresco.mbeans.VirtServerRegistry
// refuses to bring up the serverConnector bean.
path = loader.getResource("alfresco/alfresco-jmxrmi.password").toURI().getPath();
}
catch (java.net.URISyntaxException e ) { e.printStackTrace(); }
catch (Exception e )
{
if ( log.isWarnEnabled() )
log.warn(
"Could not find alfresco-jmxrmi.password on classpath");
}
if ( path == null ) { System.setProperty("alfresco.jmx.dir", ""); }
else
{
String alfresco_jmx_dir =
path.substring(0,path.lastIndexOf("/alfresco-jmxrmi.password"));
// The value of 'alfresco.jmx.dir' will be something like:
// $TOMCAT_HOME/webapps/alfresco/WEB-INF/classes/alfresco
System.setProperty("alfresco.jmx.dir", alfresco_jmx_dir);
}
}
public void setOrder(int order) { this.order = order; }
public int getOrder() { return order; }
}