2012-03-22 17 views
2

OSGi(Karaf、特に)を通してJerseyを使用しようとしています。これを行うために、私はthisバンドルjarをMavenからダウンロードし、それを私のKaraf配備ディレクトリに入れました。しかし、私がバンドルを開始しようとしたとき、それはその依存関係のいずれかを解決することができませんでした。それはまた、それぞれの依存関係のバージョン0.0.0を探しているようだが、これは間違っているようだ。すべてのJersey OSGiバンドルの依存関係を自動的にダウンロードする

このバンドルを自分のプロジェクトに入れるにはどうすればよいですか?すべての依存関係を手動でダウンロードする必要がありますか、またはこのバンドルを持つ既存のOBRを使用できますか?私はどこでこれを見つけるだろうか?

+3

実際の回答はありませんが、バージョン0.0.0を探していると必ずしも間違っているとは限りません。 OSGiでは、実際には「少なくともバージョン0.0.0」を意味します。つまり、*任意の*バージョンです。実際にジャージーをするのはかなり馬鹿だけど、それはあなたのせいじゃない! –

+0

お気軽に、ありがとうございます。 – Oleksi

+0

これはバージョン1.13以降で修正されました – harschware

答えて

8

私はこれを使用して問題なくKarafとジャージーを使用するには、ジャージーバンドルするのではなく、依存性:

<!-- Jersey --> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-core</artifactId> 
    <version>1.12</version> 
</dependency> 

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>1.12</version> 
</dependency> 

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.12</version> 
</dependency> 

<dependency> 
    <groupId>javax.ws.rs</groupId> 
    <artifactId>jsr311-api</artifactId> 
    <version>1.1.1</version> 
</dependency> 

私は最後のKaraf Apacheのコンソール上で今テストしてみた、これは私の仕事:

$ bin/karaf 
    Apache Karaf (2.2.5) 

[email protected]> install mvn:com.sun.jersey/jersey-core/1.12 
Bundle ID: 49 
[email protected]> install mvn:com.sun.jersey/jersey-server/1.12 
Bundle ID: 50 
[email protected]> install mvn:javax.ws.rs/jsr311-api/1.1.1 
Bundle ID: 51 
[email protected]> install mvn:com.sun.jersey/jersey-json/1.12 
Bundle ID: 52 
[email protected]> install mvn:org.codehaus.jackson/jackson-core-asl/1.9.5 
Bundle ID: 53 
[email protected]> install mvn:org.codehaus.jackson/jackson-jaxrs/1.9.5 
Bundle ID: 54 
[email protected]> install mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.5 
Bundle ID: 55 
[email protected]> install mvn:org.codehaus.jettison/jettison/1.1 
Bundle ID: 56 
[email protected]> start 49 50 51 52 53 54 55 56 
[email protected]> list 
    ID State   Blueprint  Level Name 
[ 49] [Active  ] [   ] [ 60] jersey-core (1.12) 
[ 50] [Active  ] [   ] [ 60] jersey-server (1.12) 
[ 51] [Active  ] [   ] [ 60] jsr311-api (1.1.1) 
[ 52] [Active  ] [   ] [ 60] jersey-json (1.12) 
[ 53] [Active  ] [   ] [ 60] Jackson JSON processor (1.9.5) 
[ 54] [Active  ] [   ] [ 60] JAX-RS provider for JSON content type, using Jackson data binding (1.9.5) 
[ 55] [Active  ] [   ] [ 60] Data mapper for Jackson JSON processor (1.9.5) 
[ 56] [Active  ] [   ] [ 60] jettison (1.1) 
+0

これが動作することを確認するためにこれを試すのに数日かかることがありますが、com.sun.jersey.api.jsonにも依存していますそれが何を提供しているか。あなたが挙げた3人のうちの1人ではないことを思い出します。 – Oleksi

+0

それでは、より多くのものが必要です。私はすべてのjersey-json依存関係を追加しました。 – jordeu

+0

これで満足していたEclipse(jersey-servletに欠けているものを追加した後)は、少なくとも必要なバンドルをすべて持っているようです(そのためにありがとう)が、使用上の競合のためバンドルの一部が起動しません。 たとえば、jersey-coreを起動すると、「解決できませんでした」という理由があります。理由:パッケージで競合が発生する:Import-Package:com.sun.jersey.api.uri; version = "0.0.0" "しかし、これは私が日食で試してみると問題になるようです。 日食の外で作業を開始すると、正しく解決されるようです。何かアドバイス?ご協力いただきありがとうございます。 – Oleksi

1

私はKaraf(3.0.1)でもうまくやったし、罰金を科しました。私はBlueprint(features.xml内)を使用し、以下の3つのJARをバンドルとして機能に追加しました。私はRESTサービスでJSON変換のためだけに必要でした。

<feature name="feature-name-test" version="${pom.version}"> 
    .... 
    <bundle>mvn:org.codehaus.jackson/jackson-core-asl/${jackson.version}</bundle 
    <bundle>mvn:org.codehaus.jackson/jackson-mapper-asl/${jackson.version}</bundle> 
    <bundle>mvn:org.codehaus.jackson/jackson-jaxrs/${jackson.version}</bundle> 
    .... 
</feature> 

ここで、$ {jackson.version}はpom.xml(私の場合は1.9.0)で定義されたプロパティです。 Karafコンソールからインストールするだけで同じように動作します。

関連する問題