我正试图通过OSGi(特别是Karaf)使用Jersey。为此,我从Maven下载了这个bundle jar,并将其放入我的Karaf部署目录中。然而,当我尝试启动捆绑包时,它无法解决任何依赖关系。它似乎也在寻找每个依赖关系的0.0.0版本,这似乎是错误的。
将此捆绑包纳入我的项目的最佳方式是什么?你我必须手动下载所有依赖项吗,或者我可以使用一些现有的有这个捆绑包的OBR吗?我在哪里能找到这个?
我在Karaf中使用了Jersey,没有问题,使用了这个依赖项而不是Jersey捆绑包:
<!-- 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)
karaf@root> install mvn:com.sun.jersey/jersey-core/1.12
Bundle ID: 49
karaf@root> install mvn:com.sun.jersey/jersey-server/1.12
Bundle ID: 50
karaf@root> install mvn:javax.ws.rs/jsr311-api/1.1.1
Bundle ID: 51
karaf@root> install mvn:com.sun.jersey/jersey-json/1.12
Bundle ID: 52
karaf@root> install mvn:org.codehaus.jackson/jackson-core-asl/1.9.5
Bundle ID: 53
karaf@root> install mvn:org.codehaus.jackson/jackson-jaxrs/1.9.5
Bundle ID: 54
karaf@root> install mvn:org.codehaus.jackson/jackson-mapper-asl/1.9.5
Bundle ID: 55
karaf@root> install mvn:org.codehaus.jettison/jettison/1.1
Bundle ID: 56
karaf@root> start 49 50 51 52 53 54 55 56
karaf@root> 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)
我在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控制台安装它们,同样的方法也会起作用。