You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ch...@apache.org on 2007/12/07 18:55:44 UTC
svn commit: r602167 - in /servicemix/branches/servicemix-4.0/runtime:
main/src/main/java/org/apache/servicemix/main/Main.java
minimum/src/main/release/etc/config.properties
minimum/src/main/release/etc/startup.properties
Author: chirino
Date: Fri Dec 7 09:55:41 2007
New Revision: 602167
URL: http://svn.apache.org/viewvc?rev=602167&view=rev
Log:
Added support for a startup.properties file which can provide more explict control over the run-level and what is started from the system directroy
Added:
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties (with props)
Modified:
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties
Modified: servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java?rev=602167&r1=602166&r2=602167&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java (original)
+++ servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java Fri Dec 7 09:55:41 2007
@@ -45,7 +45,7 @@
**/
public class Main implements MainService
{
- /**
+ /**listed in startup.properties configuration not found
* The system property name used to specify an URL to the system
* property file.
**/
@@ -63,6 +63,10 @@
* The default name used for the configuration properties file.
**/
public static final String CONFIG_PROPERTIES_FILE_VALUE = "config.properties";
+ /**
+ * The default name used for the startup properties file.
+ **/
+ public static final String STARTUP_PROPERTIES_FILE_VALUE = "startup.properties";
/*
* The property for auto-discovering the bundles
*/
@@ -385,13 +389,14 @@
File bundleDir = null;
// See if the property URL was specified as a property.
- URL propURL = null;
+ URL configPropURL = null;
+ URL startupPropURL = null;
String custom = System.getProperty(CONFIG_PROPERTIES_PROP);
if (custom != null)
{
try
{
- propURL = new URL(custom);
+ configPropURL = new URL(custom);
}
catch (MalformedURLException ex)
{
@@ -429,7 +434,9 @@
try
{
- propURL = new File(confDir, CONFIG_PROPERTIES_FILE_VALUE).toURL();
+ configPropURL = new File(confDir, CONFIG_PROPERTIES_FILE_VALUE).toURL();
+ startupPropURL = new File(confDir, STARTUP_PROPERTIES_FILE_VALUE).toURL();
+
}
catch (MalformedURLException ex)
{
@@ -438,13 +445,31 @@
}
}
- // Read the properties file.
- Properties props = new Properties();
+ Properties configProps = loadPropertiesFile(configPropURL);
+ Properties startupProps = loadPropertiesFile(startupPropURL);
+
+ // Perform variable substitution for system properties.
+ for (Enumeration e = configProps.propertyNames(); e.hasMoreElements(); )
+ {
+ String name = (String) e.nextElement();
+ configProps.setProperty(name,
+ substVars(configProps.getProperty(name), name, null, configProps));
+ }
+
+ // Mutate properties
+ Main.processConfigurationProperties(configProps, startupProps, bundleDir);
+
+ return configProps;
+ }
+
+ private static Properties loadPropertiesFile(URL configPropURL) {
+ // Read the properties file.
+ Properties configProps = new Properties();
InputStream is = null;
try
{
- is = propURL.openConnection().getInputStream();
- props.load(is);
+ is = configPropURL.openConnection().getInputStream();
+ configProps.load(is);
is.close();
}
catch (FileNotFoundException ex)
@@ -454,7 +479,7 @@
catch (Exception ex)
{
System.err.println(
- "Error loading config properties from " + propURL);
+ "Error loading config properties from " + configPropURL);
System.err.println("Main: " + ex);
try
{
@@ -466,20 +491,8 @@
}
return null;
}
-
- // Perform variable substitution for system properties.
- for (Enumeration e = props.propertyNames(); e.hasMoreElements(); )
- {
- String name = (String) e.nextElement();
- props.setProperty(name,
- substVars(props.getProperty(name), name, null, props));
- }
-
- // Mutate properties
- Main.processConfigurationProperties(props, bundleDir);
-
- return props;
- }
+ return configProps;
+ }
public static void copySystemProperties(Properties configProps)
{
@@ -498,9 +511,16 @@
/**
* Process properties to customize default felix behavior
+ * @param startupProps
*/
- protected static void processConfigurationProperties(Properties props, File bundleDir) {
- if (Boolean.parseBoolean(props.getProperty(PROPERTY_AUTO_START)) && bundleDir != null) {
+ protected static void processConfigurationProperties(Properties props, Properties startupProps, File bundleDir) {
+ if ( bundleDir == null) {
+ return;
+ }
+
+ if( "all".equals( props.getProperty(PROPERTY_AUTO_START,"").trim()) ) {
+ props.remove(PROPERTY_AUTO_START);
+ // We should start all the bundles in the system dir.
File[] bundles = bundleDir.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.toString().endsWith(".jar");
@@ -514,9 +534,42 @@
System.err.print( "Ignoring " + bundles[i].toString() + " (" + e + ")" );
}
}
- props.setProperty("felix.auto.start.1", sb.toString());
+ props.setProperty(PROPERTY_AUTO_START, sb.toString());
+ }
+ else if( STARTUP_PROPERTIES_FILE_VALUE.equals( props.getProperty(PROPERTY_AUTO_START,"").trim()) ) {
props.remove(PROPERTY_AUTO_START);
+ // We should start the bundles in the startup.properties file.
+ HashMap<Integer, StringBuffer> levels = new HashMap<Integer, StringBuffer>();
+ for (Iterator iterator = startupProps.keySet().iterator(); iterator.hasNext();) {
+ String name = (String) iterator.next();
+ File file = new File(bundleDir, name);
+ if( file.exists() && !file.isDirectory() ) {
+ Integer level;
+ try {
+ level = new Integer(startupProps.getProperty(name).trim());
+ } catch (NumberFormatException e1) {
+ System.err.print( "Ignoring " + file.toString() + " (run level must be an integer)" );
+ continue;
+ }
+ StringBuffer sb = levels.get(level);
+ if (sb==null) {
+ sb = new StringBuffer(256);
+ levels.put(level, sb);
+ }
+ try {
+ sb.append("\"").append(file.toURL().toString()).append("\" ");
+ } catch (MalformedURLException e) {
+ System.err.print( "Ignoring " + file.toString() + " (" + e + ")" );
+ }
+ } else {
+ System.err.println("Bundle listed in "+STARTUP_PROPERTIES_FILE_VALUE+" configuration not found: "+file);
+ }
+ }
+ for (Map.Entry<Integer, StringBuffer> entry : levels.entrySet()) {
+ props.setProperty(PROPERTY_AUTO_START+"."+entry.getKey(), entry.getValue().toString());
+ }
}
+
}
private static final String DELIM_START = "${";
Modified: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties?rev=602167&r1=602166&r2=602167&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties (original)
+++ servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties Fri Dec 7 09:55:41 2007
@@ -27,14 +27,13 @@
org.apache.servicemix.main.spi; version=1.0.0, \
${jre-${java.specification.version}}
#org.osgi.framework.bootdelegation=sun.*,com.sun.*
-felix.auto.start=true
-#felix.auto.start.1= \
-# "file:${servicemix.home}/bundle/org.apache.felix.shell-1.0.0.jar" \
-# "file:${servicemix.home}/bundle/org.apache.felix.shell.tui-1.0.0.jar" \
-# "file:${servicemix.home}/bundle/org.apache.felix.bundlerepository-1.0.0.jar" \
-# "file:${servicemix.home}/bundle/telnetd.jar"
-felix.startlevel.framework=1
-felix.startlevel.bundle=1
+
+# To enable the use of the startup.properties file to control the start level:
+#felix.auto.start=startup.properties
+felix.auto.start=all
+
+felix.startlevel.framework=100
+felix.startlevel.bundle=50
felix.cache.profiledir=${servicemix.home}/data/cache
#framework.service.urlhandlers=false
Added: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties
URL: http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties?rev=602167&view=auto
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties (added)
+++ servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties Fri Dec 7 09:55:41 2007
@@ -0,0 +1,39 @@
+# This file allows you to control the start level of each bundle.
+# TODO: generate this file so that the bundle version are replaced at
+# build time.
+#
+
+#
+# Libs that don't start services should probably get loaded first.
+#
+org.apache.servicemix.bundles.ant-1.7.0-4.0-SNAPSHOT.jar=10
+org.apache.servicemix.bundles.aopalliance-1.0-4.0-SNAPSHOT.jar=10
+org.apache.servicemix.bundles.cglib-2.1_3-4.0-SNAPSHOT.jar=10
+org.apache.servicemix.bundles.mina-1.1.6-r602102-4.0-SNAPSHOT.jar=10
+org.apache.servicemix.bundles.xstream-1.2.2-4.0-SNAPSHOT.jar=10
+geronimo-servlet_2.5_spec-1.1.1-SNAPSHOT.jar=10
+geronimo-stax-api_1.0_spec-1.0.1-SNAPSHOT.jar=10
+org.osgi.compendium-0.9.0-20070713.230317-1.jar=10
+spring-aop-2.5.jar=10
+spring-beans-2.5.jar=10
+spring-context-2.5.jar=10
+spring-core-2.5.jar=10
+spring-osgi-core-1.0-m3.jar=10
+spring-osgi-extender-1.0-m3.jar=10
+spring-osgi-io-1.0-m3.jar=10
+
+#
+# Startup core services like logging
+#
+pax-logging-api-0.9.8-20071205.114123-4.jar=20
+pax-logging-service-0.9.8-20071205.114123-4.jar=20
+org.apache.servicemix.runtime.filemonitor-4.0-SNAPSHOT.jar=20
+
+#
+# The rest of the services..
+#
+org.apache.felix.bundlerepository-1.1.0-20071205.111236-2.jar=50
+org.apache.felix.configadmin-0.9.0-20070906.081947-8.jar=50
+org.apache.servicemix.gshell.core-4.0-SNAPSHOT.jar=50
+org.apache.servicemix.gshell.obr-4.0-SNAPSHOT.jar=50
+org.apache.servicemix.gshell.osgi-4.0-SNAPSHOT.jar=50
Propchange: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/startup.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain