问题描述
嗨,我正在尝试实现一个简单的Rest服务,该服务在保险丝上返回JSON响应。以下是我的POM.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.fuse.test</groupId>
<artifactId>fuse-hw</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.10</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<groupId>org.apache.Felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>2.4.0</version>
<configuration>
<instructions>
<Export-Package></Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
/ resources / meta-inf / spring下的application.xml是
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
<jaxrs:server id="restService" address="http://localhost:9000/lastmile">
<jaxrs:serviceBeans>
<ref bean="lastMileService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jacksonjsonProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="lastMileService" class="com.fuse.test.RestService" />
<bean id="jacksonjsonProvider" class="org.codehaus.jackson.jaxrs.JacksonjsonProvider" />
当我在Fuse上安装捆绑软件时,出现以下错误
**Error executing command: Error starting bundles:
Unable to start bundle 315: Unresolved constraint in bundle org.fuse.test.fuse-hw [315]:
Unable to resolve 315.0: missing requirement [315.0] osgi.wiring.package; (&
(osgi.wiring.package=org.codehaus.jackson.jaxrs)(version>=1.9.0)(!(version>=2.0.0)))**
请协助解决此问题。 也有一些很好的教程/ FUSE培训视频/ Karaf。关于Osgi的信息在互联网上似乎非常有限。
解决方法
我弄清楚了,问题是我使用的杰克逊版本与保险丝6.3中预装的版本不同。 使用以下命令找出您在保险丝karaf env中安装的库的版本
JBossFuse:karaf@root> list -l | grep -i "jackson"
[ 146] [Active ] [ ] [ ] [ 80]
mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.6.3
[ 147] [Active ] [ ] [ ] [ 80]
mvn:com.fasterxml.jackson.module/jackson-module-paranamer/2.6.3
[ 148] [Active ] [ ] [ ] [ 80]
mvn:com.fasterxml.jackson.module/jackson-module-scala_2.10/2.6.3
[ 300] [Active ] [ ] [ ] [ 50] mvn:org.apache.camel/camel-
jackson/2.17.0.redhat-630187
[ 313] [Active ] [ ] [ ] [ 50]
mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.6.3
[ 314] [Active ] [ ] [ ] [ 50] mvn:org.apache.camel/camel-
jacksonxml/2.17.0.redhat-630187
所以我应该使用的版本是2.6.3,或者更可取的选择是使用
<dependency>
<groupId>org.jboss.fuse.bom</groupId>
<artifactId>jboss-fuse-parent</artifactId>
<version>6.3.0.redhat-187</version>
<type>pom</type>
<scope>import</scope>
</dependency>
,无需指定罐子的版本。
还有另一个与安装任何不属于保险丝束的罐子有关的问题,请使用以下命令
JBossFuse:karaf@root> install -s wrap:file:/<abc.jar>