The stop method is supposed to not block I think, but I'll do some
more testing tomorrow.

On Thursday, January 6, 2011, Achim Nierbeck <[email protected]> wrote:
> Hi,
>
> are you sure we don't need the extra thread for the shutdown?
> While testing with the camel example I used it did take a bit longer to
> stop.
> And it looks like the stop method doesn't return until the framework is
> stopped.
> Now if the shutdown takes to long the wrapper normaly just "kills" the
> vm, doesn't it?
>
> Achim
>
>
>> Author: gnodet
>> Date: Thu Jan  6 17:24:29 2011
>> New Revision: 1055945
>>
>> URL: http://svn.apache.org/viewvc?rev=1055945&view=rev
>> Log:
>> [KARAF-327] - This should handle the stopping through the wrapper better.
>>
>> Modified:
>>     
>> karaf/branches/karaf-2.1.x/main/src/main/java/org/apache/karaf/main/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=1055945&r1=1055944&r2=1055945&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
>>  Thu Jan  6 17:24:29 2011
>> @@ -39,6 +39,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;
>> @@ -262,11 +263,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);
>> +

-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Reply via email to