1

ApacheKaraf2.3.0をインストールしました。インストールする必要があるバンドルの1つは、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

編集:

重要なことを言うのを忘れました。また、 CXF2.7.0バージョンに更新しました。これは、サーブレット3.0の依存関係を導入しているバージョンです。これは依存関係ツリーからのグラフです:

ここに画像の説明を入力してください

多分これを回避する方法についてあなたにいくつかのアイデアを与えるでしょうか?私が考えることができる唯一のことは、 CXF2.6.xに戻ることです。

4

2 に答える 2

1

バンドルが本当に 2.5 よりも新しいものを必要とする場合、Karaf 2.3.0 で実行する際に問題が発生する可能性があります。Karaf 2.3 は、Servlet 2.5 に基づく Jetty 7.6.7 を使用します。新しい Servlet 3 ベースの API などはサポートしていません。servlet-api バンドルをアップグレードすると動作する可能性がありますが、バンドル/アプリが Servlet 3 機能のいずれかを使用している場合、動作しない可能性があります。

Karaf 3 は、Servlet 3 をサポートする Jetty 8.1 にアップグレードされます。それをテストし、それを引き出す手助けがあれば、Karaf コミュニティは大歓迎です。:-)

于 2012-11-08T17:43:19.327 に答える
0

本当に geronimo サーブレット仕様を使用する必要がありますか? これを次のように置き換えてみてください。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
于 2012-11-08T17:37:35.053 に答える