首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Equinox OSGI框架上具有无限循环的丛

Equinox OSGI框架上具有无限循环的丛
EN

Stack Overflow用户
提问于 2013-07-23 19:19:48
回答 1查看 649关注 0票数 1

我有一个包,它在Equinox OSGI框架上使用无限循环运行。因为有了这个包,当我再次运行框架时,我无法启动一个新的包。在这种情况下,我怎样才能阻止这个捆绑呢?

下面是我输入的启动框架的命令:

代码语言:javascript
运行
复制
java -jar org.eclipse.osgi_3.9.0.v20130529-1710.jar -console

它无限地显示了这个信息:

代码语言:javascript
运行
复制
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
...........

回答这个问题还有助于回答如何在OSGI包执行方法时停止它,以及是否允许这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 20:09:47

我假设您的包在其BundleActivator.start方法中进入了一个无限循环,因此绑定了OSGi回调。显然这不是你该做的事!!您别无选择,只能关闭JVM,可能是强制关闭。

现在的问题是,下次启动OSGi时,不要再次自动启动包。确保这一点的最简单方法是删除“存储”目录,在该目录中,OSGi会记住上次运行时启动的包列表。不幸的是,存储目录位置受制于配置属性,并且您没有指定如何配置OSGi。Equinox的缺省值是configuration/org.eclipse.osgi,所以尝试删除它。您也可以尝试使用-clean运行。

关于如何在OSGi包执行方法时停止它:当然,您可以停止一个绑定包,这将导致它的stop方法执行。在该方法中,您可以做任何您想做的事情:通常,您应该致力于清理在start方法中创建的任何东西。但是,如果您有一个失控的线程,那么基本上没有什么可以做的,因为Java没有提供杀死线程的方法,所以它只提供了一个协作的interrupt方法。

OSGi无法改变Java的基本规则,因此在OSGi中失控的线程与其他任何Java应用程序一样是一个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17819188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档