You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2011/01/07 12:01:27 UTC
svn commit: r1056254 - in /karaf/branches/karaf-2.1.x:
main/src/main/java/org/apache/karaf/main/Main.java
shell/wrapper/src/main/java/org/apache/karaf/shell/wrapper/Main.java
Author: gnodet
Date: Fri Jan 7 11:01:26 2011
New Revision: 1056254
URL: http://svn.apache.org/viewvc?rev=1056254&view=rev
Log:
[KARAF-327] Add a property to control the framework factory in case multiples ones are available in the classloader, do the call to framework.stop() in a new thread to avoid blocking (even though the shutdown itself does not block, felix waits for a lock and that can take some time), also report the error if a timeout occurs using the wrapper
Modified:
karaf/branches/karaf-2.1.x/main/src/main/java/org/apache/karaf/main/Main.java
karaf/branches/karaf-2.1.x/shell/wrapper/src/main/java/org/apache/karaf/shell/wrapper/Main.java
Modified: karaf/branches/karaf-2.1.x/main/src/main/java/org/apache/karaf/main/Main.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.1.x/main/src/main/java/org/apache/karaf/main/Main.java?rev=1056254&r1=1056253&r2=1056254&view=diff
==============================================================================
--- karaf/branches/karaf-2.1.x/main/src/main/java/org/apache/karaf/main/Main.java (original)
+++ karaf/branches/karaf-2.1.x/main/src/main/java/org/apache/karaf/main/Main.java Fri Jan 7 11:01:26 2011
@@ -38,6 +38,7 @@ import java.util.regex.Pattern;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
import org.osgi.framework.Constants;
import org.osgi.framework.FrameworkEvent;
import org.osgi.framework.ServiceReference;
@@ -146,6 +147,8 @@ public class Main {
public static final String KARAF_FRAMEWORK = "karaf.framework";
+ public static final String KARAF_FRAMEWORK_FACTORY = "karaf.framework.factory";
+
public static final String KARAF_SHUTDOWN_TIMEOUT = "karaf.shutdown.timeout";
public static final String KARAF_SHUTDOWN_PORT = "karaf.shutdown.port";
@@ -239,10 +242,13 @@ public class Main {
shutdownTimeout = Integer.parseInt(configProps.getProperty(KARAF_SHUTDOWN_TIMEOUT, Integer.toString(shutdownTimeout)));
// Start up the OSGI framework
- InputStream is = classLoader.getResourceAsStream("META-INF/services/" + FrameworkFactory.class.getName());
- BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
- String factoryClass = br.readLine();
- br.close();
+ String factoryClass = configProps.getProperty(KARAF_FRAMEWORK_FACTORY);
+ if (factoryClass == null) {
+ InputStream is = classLoader.getResourceAsStream("META-INF/services/" + FrameworkFactory.class.getName());
+ BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ factoryClass = br.readLine();
+ br.close();
+ }
FrameworkFactory factory = (FrameworkFactory) classLoader.loadClass(factoryClass).newInstance();
framework = factory.newFramework(new StringMap(configProps, false));
framework.start();
@@ -279,7 +285,15 @@ public class Main {
// Stop the framework in case it's still active
exiting = true;
if (framework.getState() == Bundle.ACTIVE) {
- framework.stop();
+ new Thread() {
+ public void run() {
+ try {
+ framework.stop();
+ } catch (BundleException e) {
+ System.err.println("Error stopping karaf: " + e.getMessage());
+ }
+ }
+ }.start();
}
int timeout = shutdownTimeout;
Modified: karaf/branches/karaf-2.1.x/shell/wrapper/src/main/java/org/apache/karaf/shell/wrapper/Main.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.1.x/shell/wrapper/src/main/java/org/apache/karaf/shell/wrapper/Main.java?rev=1056254&r1=1056253&r2=1056254&view=diff
==============================================================================
--- karaf/branches/karaf-2.1.x/shell/wrapper/src/main/java/org/apache/karaf/shell/wrapper/Main.java (original)
+++ karaf/branches/karaf-2.1.x/shell/wrapper/src/main/java/org/apache/karaf/shell/wrapper/Main.java Fri Jan 7 11:01:26 2011
@@ -100,7 +100,11 @@ public class Main extends Thread impleme
try
{
destroying = true;
- main.destroy();
+ if (!main.destroy())
+ {
+ System.err.println("Timeout waiting for Karaf to shutdown");
+ return -3;
+ }
}
catch (Throwable ex)
{