Tag: osgi

osgi:使用ServiceFactories?

我目前正在尝试获得一个包含Service Factory运行的简单包。 这是我的工厂类: public class SvcFactory implements ServiceFactory { @Override public ServiceB getService(Bundle bundle, ServiceRegistration registration) { return new ServiceBImpl(); } @Override public void ungetService(Bundle bundle, ServiceRegistration registration, ServiceB service) { } } 这是我应该由工厂创建的服务: public class ServiceBImpl implements ServiceB { private ServiceA svcA; public void setA(ServiceA a) { svcA = a; } } 最后是OSGI-INF / […]

如何查找和停止所有当前运行的线程?

我有一个multithreadingjava项目,我想添加一个方法stop()来停止所有正在运行的线程。 问题是这个项目是由其他人开发的,我不熟悉它如何实现多个线程。 我所知道的是,一旦项目开始,就会调用许multithreading并且它们会永远运行。 有没有办法找到所有正在运行的线程并阻止它们? 我搜索了很多,并找到了如何获取正在运行的线程列表: Set threadSet = Thread.getAllStackTraces().keySet(); 下一步要做什么来阻止所有正在运行的线程? 我想要停止这些线程的原因是我需要将此项目作为捆绑包部署到OSGi容器。 捆绑包启动后,多个线程将永远运行。 所以我需要实现一个destroy()方法来阻止所有线程来控制bundle生命周期。 怎么样 for (Thread t : Thread.getAllStackTraces().keySet()) { if (t.getState()==Thread.State.RUNNABLE) t.interrupt(); } for (Thread t : Thread.getAllStackTraces().keySet()) { if (t.getState()==Thread.State.RUNNABLE) t.stop(); }

如何在OSGi包中使用Spring bean?

我有一个应用程序,我必须使用Spring根据OSGi包中的一些业务条件加载bean。 这个bean不用于导出,用于计算inisde我的包。 基本上我有一个实际的服务组件,它被导出,并且它必须在内部使用这个Spring bean。 但… 当我使用Spring DM时,扩展程序在单独的线程中加载应用程序上下文。 如何访问我的包内的上下文文件? 如何确保扩展程序线程完成加载应用程序上下文,以便我可以在我的包中使用它? 我不想像Spring DM那样将应用程序上下文导出为服务,因为它仅在我的bundle中用于内部目的。 有没有办法做到这一点?

如何使用eclipse和bndtools将jar转换为OSGi包

我正在寻找一个循序渐进的指南,使用eclipse bndtools插件将jar转换为OSGi包。 我知道可以使用命令行使用bnd来完成它,但很高兴知道如何通过IDE执行相同的操作。 我可能会遗漏一些东西,但本教程仅解释了如何从头开始创建项目。

如何从jar库创建OSGi包?

如何从jar库创建OSGi包?