Fuse Error部署bundle IndexOutOfBoundsException

时间:2017-11-10 12:19:30

标签: jbossfuse

我是FUSE的新手。我正在尝试启动一个简单的REST服务。

我正在使用Jboss Fuse 6.3。

捆绑安装,但没有错误我无法启动它。 安装捆绑包后,它显示为“活动”,但标签为“失败”。

日志会显示以下错误:

 12:29:17,046 | ERROR | Thread-53        | BlueprintContainerImpl           | 23 - org.apache.aries.blueprint.core - 1.4.5 | Unable to start blueprint container for bundle null/0.0.0
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(Unknown Source)[:1.8.0_151]
    at java.util.ArrayList.get(Unknown Source)[:1.8.0_151]
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.readDirectives(BlueprintContainerImpl.java:214)
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:296)
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:270)
    at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)
    at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)

这是我的代码:

Picture of project structure

的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.fusesource.example</groupId>
    <artifactId>rest-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>rest-service</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.servicemix.specs</groupId>
            <artifactId>org.apache.servicemix.specs.jsr311-api-1.1.1</artifactId>
            <version>1.9.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-http</artifactId>
            <version>2013.01</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
    </dependencies>

    <build>
       <defaultGoal>install</defaultGoal>
       <plugins>
          <plugin>
             <groupId>org.apache.felix</groupId>
             <artifactId>maven-bundle-plugin</artifactId>
             <version>2.3.6</version>
             <extensions>true</extensions>

             <configuration>
                <instructions>
                   <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                   <Import-Package>* </Import-Package>
                </instructions>
             </configuration>

          </plugin>
       </plugins>
    </build>

</project>

Blueprint.xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<blueprint xmlns = "http://www.osgi.org/xmlns/blueprint/v1.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:jaxrs = "http://cxf.apache.org/blueprint/jaxrs"
   xmlns:cxf="http://cxf.apache.org/blueprint/core"
   xsi:schemaLocation = "http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
   http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
   http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">

   <jaxrs:server id="servicios" address="/serviciosPrueba">
      <jaxrs:serviceBeans>
        <ref component-id="miServicio" />
      </jaxrs:serviceBeans>
   </jaxrs:server>

   <bean id="miServicio" class="com.rest.Servicio" />

</blueprint>

爪哇:

package com.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;


@Path("/servicioPrueba")
public class Servicio {

   @GET
   @Path("/getData")
   @Produces(MediaType.APPLICATION_JSON)
   public String getUser() {
      String reponse = "This is standard response from REST";
      return reponse;
   }
}

非常感谢。

2 个答案:

答案 0 :(得分:1)

在pom.xml中 请更换 <packaging>jar</packaging><packaging>bundle</packaging> 否则它会错过必要的OSGi标题

答案 1 :(得分:0)

我解决了在pom.xml中添加特定版本的依赖项的第二个错误:

 <configuration>
                <instructions>
                   <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                   <Import-Package>
                        javax.ws.rs;version="[2.0,3)",
                        javax.ws.rs.core;version="[2.0,3)",
                        * 
                   </Import-Package>
                </instructions>
</configuration>