微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Jboss Fuse 6.3上实现REST OSGI服务

如何解决在Jboss Fuse 6.3上实现REST OSGI服务

嗨,我正在尝试实现一个简单的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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?