[英]Accessing osgi bundle classess from servlet
我有两个项目。
我通过以下链接从tomcat启动了felix容器,没有问题
现在,我陷入了如何从Servlet调用捆绑软件(已安装在felix容器中)的类的问题。 由于bundle项目不在类路径中,而是在以下位置/ WEB-IN / bundles中,因此抛出类未找到错误(我必须将此位置用于bundle)。 那么如何实现呢?
框架捆绑包的BundleContext放在ProvisionActivator的servlet上下文中:
servletContext.setAttribute(BundleContext.class.getName(), context);
这意味着您可以通过servletContext(在所有普通servlet中都可用)访问BundleContext,如下所示:
BundleContext context = servletContext.getAttribute(BundleContext.class.getName());
您可以通过以下方式访问嵌入式OSGi容器内的类:
这是这样做的方法,但是您不应该使用此方法:)。 通过在捆绑包中注册实现来自WAR类路径的接口的OSGi服务的方式来设计解决方案。 之后,您应该使用bundleContext对象检索OSGi服务对象。
另一个好的解决方案是,如果在捆绑软件中实现所需的逻辑,而不是在WAR中提供类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.