You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by ma...@sdv-it.de on 2015/09/17 16:02:50 UTC
InterruptedException when stopping system-bundle
Hello everyone
I created a little executable-jar which launches Felix. After some
computation has been done the framework is shutdown by using
context.getBundle(0).stop()
This however always throws an InterruptedException
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at
org.apache.felix.framework.util.ThreadGate.await(ThreadGate.java:79)
at org.apache.felix.framework.Felix.waitForStop(Felix.java:1068)
at aQute.launcher.Launcher.deactivate(Launcher.java:738)
at aQute.launcher.Launcher.run(Launcher.java:287)
at aQute.launcher.Launcher.main(Launcher.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:38)
My only guess is, that this has something to do with the way I execute my
code: I use an @Activate method which runs some code and shuts down the
framework before it completes
@Activate
void activate(ComponentContext ctx){
this.context = ctx.getBundleContext();
try{
executeGroovy();
}catch(Throwable t){
t.printStackTrace();
}
String keepAlive = context.getProperty(
"de.sdv.geb.runner.keepAlive");
if(!Boolean.parseBoolean(keepAlive)){
try {
System.out.println("Shutting down");
context.getBundle(0).stop();
} catch (BundleException e) {
System.err.println("Error stopping
OSGI-Container...killing VM now");
e.printStackTrace();
// hard way
System.exit(1);
}
}
}
Using Felix 5.2.0 and the executable jar is created with BndTool 3.0.0
from a run-descriptor.
Any ideas how to get rid of this exceptions?
Thanks
Marc
Antwort: Re: InterruptedException when stopping system-bundle
Posted by ma...@sdv-it.de.
Thanks.
Unfortunately this also raises the InterruptedException. After digging
deeper it seems this is caused by the aQute.launcher.Launcher which is
wrapped around the Framework in BndTools (should have seen that from the
stacktrace in the beginning).
So I guess I have to live with that exception.
- Marc
Von: Raymond Auge <ra...@liferay.com>
An: felix users <us...@felix.apache.org>,
Datum: 17.09.2015 16:25
Betreff: Re: InterruptedException when stopping system-bundle
What you probably want is:
Framework fw = context.getBundle(0).adapt(Framework.class);
fw.waitForStop(timeout);
- Ray
On Thu, Sep 17, 2015 at 4:02 PM, <ma...@sdv-it.de> wrote:
> Hello everyone
>
> I created a little executable-jar which launches Felix. After some
> computation has been done the framework is shutdown by using
> context.getBundle(0).stop()
>
> This however always throws an InterruptedException
>
> java.lang.InterruptedException
> at java.lang.Object.wait(Native Method)
> at
> org.apache.felix.framework.util.ThreadGate.await(ThreadGate.java:79)
> at org.apache.felix.framework.Felix.waitForStop(Felix.java:1068)
> at aQute.launcher.Launcher.deactivate(Launcher.java:738)
> at aQute.launcher.Launcher.run(Launcher.java:287)
> at aQute.launcher.Launcher.main(Launcher.java:87)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:38)
>
> My only guess is, that this has something to do with the way I execute
my
> code: I use an @Activate method which runs some code and shuts down the
> framework before it completes
>
> @Activate
> void activate(ComponentContext ctx){
> this.context = ctx.getBundleContext();
> try{
> executeGroovy();
> }catch(Throwable t){
> t.printStackTrace();
> }
>
> String keepAlive = context.getProperty(
> "de.sdv.geb.runner.keepAlive");
>
> if(!Boolean.parseBoolean(keepAlive)){
> try {
> System.out.println("Shutting down");
> context.getBundle(0).stop();
> } catch (BundleException e) {
> System.err.println("Error stopping
> OSGI-Container...killing VM now");
> e.printStackTrace();
> // hard way
> System.exit(1);
> }
> }
> }
>
> Using Felix 5.2.0 and the executable jar is created with BndTool 3.0.0
> from a run-descriptor.
>
> Any ideas how to get rid of this exceptions?
>
> Thanks
> Marc
--
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
(@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
(@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
(@OSGiAlliance)
Re: InterruptedException when stopping system-bundle
Posted by Raymond Auge <ra...@liferay.com>.
What you probably want is:
Framework fw = context.getBundle(0).adapt(Framework.class);
fw.waitForStop(timeout);
- Ray
On Thu, Sep 17, 2015 at 4:02 PM, <ma...@sdv-it.de> wrote:
> Hello everyone
>
> I created a little executable-jar which launches Felix. After some
> computation has been done the framework is shutdown by using
> context.getBundle(0).stop()
>
> This however always throws an InterruptedException
>
> java.lang.InterruptedException
> at java.lang.Object.wait(Native Method)
> at
> org.apache.felix.framework.util.ThreadGate.await(ThreadGate.java:79)
> at org.apache.felix.framework.Felix.waitForStop(Felix.java:1068)
> at aQute.launcher.Launcher.deactivate(Launcher.java:738)
> at aQute.launcher.Launcher.run(Launcher.java:287)
> at aQute.launcher.Launcher.main(Launcher.java:87)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> aQute.launcher.pre.EmbeddedLauncher.main(EmbeddedLauncher.java:38)
>
> My only guess is, that this has something to do with the way I execute my
> code: I use an @Activate method which runs some code and shuts down the
> framework before it completes
>
> @Activate
> void activate(ComponentContext ctx){
> this.context = ctx.getBundleContext();
> try{
> executeGroovy();
> }catch(Throwable t){
> t.printStackTrace();
> }
>
> String keepAlive = context.getProperty(
> "de.sdv.geb.runner.keepAlive");
>
> if(!Boolean.parseBoolean(keepAlive)){
> try {
> System.out.println("Shutting down");
> context.getBundle(0).stop();
> } catch (BundleException e) {
> System.err.println("Error stopping
> OSGI-Container...killing VM now");
> e.printStackTrace();
> // hard way
> System.exit(1);
> }
> }
> }
>
> Using Felix 5.2.0 and the executable jar is created with BndTool 3.0.0
> from a run-descriptor.
>
> Any ideas how to get rid of this exceptions?
>
> Thanks
> Marc
--
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
(@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
(@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)