从您的 Web 应用程序访问 OSGi 服务很容易。
首先,您需要 MANIFEST.MF 中的 Dependencies,它通常会部署
到 webapp/META-INF 文件夹。
要添加的依赖项是 org.osgi.core 和 org.jboss.osgi.framework 以及您部署的 Bundles 作为 deployment.yourbundle:version。
例如你的包被命名为“yourbundle_1.0.0.1.jar”:
Manifest-Version: 1.0
Built-By: me
Build-Jdk: 1.7.0_09
Dependencies: org.osgi.core,org.jboss.osgi.framework,deployment.yourbundle:1.0.0.1
在 Activator 类中将您的捆绑包注册为服务(应该已经完成):
public void start(BundleContext bundleContext) throws Exception {
context.registerService(YourBundleService.class.getName(), new YourBundle(),null);
}
在 JBoss AS 中访问 OSGi BundleContext 需要一个 EJB:
@Stateless
public class OSGiServiceBean {
@Resource
BundleContext context;
public YourBundleService getBundleService() {
ServiceReference sref = context.getServiceReference(YourBundleService.class.getName());
return (YourBundleService) context.getService(sref);
}
}