Return-Path: Delivered-To: apmail-karaf-commits-archive@minotaur.apache.org Received: (qmail 95436 invoked from network); 7 Jan 2011 11:01:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Jan 2011 11:01:48 -0000 Received: (qmail 48262 invoked by uid 500); 7 Jan 2011 11:01:48 -0000 Delivered-To: apmail-karaf-commits-archive@karaf.apache.org Received: (qmail 48230 invoked by uid 500); 7 Jan 2011 11:01:48 -0000 Mailing-List: contact commits-help@karaf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@karaf.apache.org Delivered-To: mailing list commits@karaf.apache.org Received: (qmail 48222 invoked by uid 99); 7 Jan 2011 11:01:47 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Jan 2011 11:01:47 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Jan 2011 11:01:47 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 2CA4B23888D2; Fri, 7 Jan 2011 11:01:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Fri, 07 Jan 2011 11:01:27 -0000 To: commits@karaf.apache.org From: gnodet@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110107110127.2CA4B23888D2@eris.apache.org> 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) {