You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by an...@apache.org on 2011/01/05 22:43:57 UTC
svn commit: r1055653 -
/karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
Author: anierbeck
Date: Wed Jan 5 21:43:57 2011
New Revision: 1055653
URL: http://svn.apache.org/viewvc?rev=1055653&view=rev
Log:
[KARAF-327] - This should handle the stopping through the wrapper better.
Modified:
karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
Modified: karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java
URL: http://svn.apache.org/viewvc/karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java?rev=1055653&r1=1055652&r2=1055653&view=diff
==============================================================================
--- karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java (original)
+++ karaf/trunk/main/src/main/java/org/apache/karaf/main/Main.java Wed Jan 5 21:43:57 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;
@@ -260,11 +261,25 @@ public class Main {
FrameworkEvent event;
if (callback != null) {
callback.waitingForShutdown();
- framework.stop();
- do {
+ event = framework.waitForStop(timeout);
+ //do the stoping in an extra thread
+ Runnable stopper = new Runnable() {
+
+ public void run() {
+ try {
+
+ framework.stop();
+ } catch (BundleException e) {
+ System.err.println("Exception while stoping framework: " + e);
+ }
+ }
+ };
+ Thread t = new Thread(stopper);
+ t.start();
+ while (t.getState() != Thread.State.TERMINATED && event.getType() == FrameworkEvent.WAIT_TIMEDOUT) {
callback.waitingForShutdown();
event = framework.waitForStop(timeout);
- } while(event.getType() == FrameworkEvent.WAIT_TIMEDOUT);
+ }
break;
} else {
event = framework.waitForStop(0);