首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在web应用程序中检索BundleContext

无法在web应用程序中检索BundleContext
EN

Stack Overflow用户
提问于 2013-05-21 23:04:53
回答 1查看 1.5K关注 0票数 0

我添加了以下包,可以将war (web应用程序)部署到OSGi框架中。我使用"Apache Felix可分发二进制文件“:

代码语言:javascript
复制
   32|Active     |   20|OPS4J Pax Logging - API (1.7.0)
   33|Active     |   20|OPS4J Pax Logging - Service (1.7.1.SNAPSHOT)
   34|Active     |   20|OPS4J Pax Url - mvn: (1.3.5)
   35|Active     |   20|OPS4J Pax Url - war (1.3.5)
   36|Active     |   20|OPS4J Pax Url - wrap: (1.3.5)
   37|Active     |   20|OPS4J Pax Web - API (1.1.12)
   38|Active     |   20|OPS4J Pax Web - FileInstall Deployer (1.1.12)
   39|Active     |   20|OPS4J Pax Web - Extender - WAR (1.1.12)
   40|Active     |   20|OPS4J Pax Web - Extender - Whiteboard (1.1.12)
   41|Active     |   20|OPS4J Pax Web - Jetty Bundle (1.1.12)
   42|Active     |   20|OPS4J Pax Web - Jsp Support (1.1.12)
   43|Active     |   20|OPS4J Pax Web - Runtime (1.1.12)
   44|Active     |   20|OPS4J Pax Web - Service SPI (1.1.12)

因此,我使用了一个简单的struts 2应用程序(Hello world)进行测试,我创建了war,然后将其放入"file install“目录,它就会激活,我可以看到我的欢迎页面。

在此之后,我尝试检索BundleContext以使用war中已注册的服务,我添加了:

代码语言:javascript
复制
BundleContext ctx = (BundleContext) ServletActionContext.getServletContext().getAttribute("osgi-bundlecontext");

但是,我发现了一个例外:

"java.lang.ClassCastException:不能将org.apache.felix.framework.BundleContextImpl强制转换为org.osgi.framework.BundleContext“

会有什么问题呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-22 17:33:02

在评论中从讨论中做出回答:

您在类路径中有两次提到的类。一个存在于OSGi容器中,另一个包含在jar文件中。PAX模块从OSGi容器导入类,而您的webapp从外部jar文件导入类。

在本例中,jar包含在WEB-INF/lib中。当您使用Maven时,您应该将osgi-core依赖的范围设置为provided。

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

https://stackoverflow.com/questions/16673314

复制
相关文章

相似问题

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