Apache Karaf 2.3.0中的javax.servlet.http包

时间:2012-11-08 17:10:45

标签: java osgi cxf apache-karaf osgi-bundle

我已经安装了 Apache Karaf 2.3.0 。我需要安装的一个bundle使用javax.servlet.http包中的类。当我尝试安装捆绑包时,它给出了错误消息:

karaf@root> ERROR: Bundle com.groupgti.esb.purge [207] Error starting mvn:com.groupgti.esb/esb.purge/1.0.0 (org.osgi.framework.BundleException: Unresolved constraint in b
undle com.groupgti.esb.purge [207]: Unable to resolve 207.0: missing requirement [207.0] osgi.wiring.package; (osgi.wiring.package=com.groupgti.esb.cxf.interceptors) [cau
sed by: Unable to resolve 212.0: missing requirement [212.0] osgi.wiring.package; (&(osgi.wiring.package=javax.servlet.http)(version>=2.6.0)(!(version>=3.0.0)))])
org.osgi.framework.BundleException: Unresolved constraint in bundle com.groupgti.esb.purge [207]: Unable to resolve 207.0: missing requirement [207.0] osgi.wiring.package
; (osgi.wiring.package=com.groupgti.esb.cxf.interceptors) [caused by: Unable to resolve 212.0: missing requirement [212.0] osgi.wiring.package; (&(osgi.wiring.package=jav
ax.servlet.http)(version>=2.6.0)(!(version>=3.0.0)))]
        at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:1868)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295)
        at java.lang.Thread.run(Thread.java:662)

javax.servlet.http包从以下位置导出: mvn:org.apache.geronimo.specs / geronimo-servlet_2.5_spec / 1.1.2 系统包。问题是它的版本 2.5 但我的捆绑包至少需要 2.6.0 。是否有解决方法或某些内容将 geronimo-servlet 更新为与我的捆绑包兼容的更高版本? (这是系统包)。

其他信息:

CXF Version: 2.7.0
Camel Version 2.10.2

编辑:

我忘了提到重要的事情。我还将 CXF 更新为 2.7.0 版本,而CXF是引入Servlet 3.0依赖关系的版本。这是依赖树的图表:

enter image description here

也许会让你对如何解决这个问题有所了解?我唯一能想到的就是回到 CXF 2.6.x

2 个答案:

答案 0 :(得分:1)

如果您的捆绑包真的需要比2.5更新的东西,那么在Karaf 2.3.0上运行它可能会遇到问题。 Karaf 2.3使用基于Servlet 2.5的Jetty 7.6.7。它不支持任何较新的基于Servlet 3的API等。你可以升级servlet-api包,它可以工作,但如果你的bundle / app使用任何Servlet 3功能,它可能不会工作。

Karaf 3将升级到Jetty 8.1,它支持Servlet 3的东西。任何有助于测试并得到这些的帮助都会受到Karaf社区的高度赞赏。 : - )

答案 1 :(得分:0)

您真的需要使用geronimo servlet规范吗?尝试用它替换它:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>