2015-09-25 54 views
4

我是否需要专门包含JAX-RS和HttpServlet jar来将Swagger 2.0集成到我的JAX-RS项目中?将Swagger 2.0与Glassfish 4.1集成OSGi REST项目

我想提出我在下面的规格开发RESTful服务:

  • 的Java
  • NetBeans IDE中8.0.2 [Maven的]
  • 的OSGi 4.2
  • 在JSON项目交流信息格式
  • Glassfish 4.1
  • JAX-RS 2.0
  • 泽西2.0

该项目成功地部署到Glassfish的,但任何的REST服务被调用时,它抛出Error 404服务器的日志抱怨类加载错误,特别是javax.ws.rs。*(被提供,尽管javax.ws.rs-API),并产生 java.lang.NoClassDefFoundError: javax/ws/rs/core/Application

的pom.xml - Maven的捆绑插件

<plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.5.4</version> 
       <extensions>true</extensions> 
       <configuration> 
        <supportedProjectTypes> 
         <supportedProjectType>ejb</supportedProjectType> 
         <supportedProjectType>war</supportedProjectType> 
         <supportedProjectType>bundle</supportedProjectType> 
         <supportedProjectType>jar</supportedProjectType> 
        </supportedProjectTypes> 
        <instructions> 
         <!-- Specify elements to add to MANIFEST.MF --> 
         <Web-ContextPath>/sample</Web-ContextPath> 
         <!-- By default, nothing is exported --> 
         <!--<Export-Package>!*.impl.*, *</Export-Package>--> 
         <Import-Package> 
          !com.sun*;resolution:=optional, 
          !javassist*;resolution:=optional, 
          !groovy*;resolution:=optional, 
          !javax.microedition*;resolution:=optional, 
          !org.apache*;resolution:=optional, 
          !org.codehaus*;resolution:=optional, 
          !nu.xom;resolution:=optional, 
          !org*;resolution:=optional,* 
         </Import-Package> 
         <Bundle-ClassPath>.,WEB-INF/classes,WEB-INF/lib/slf4j-api-1.7.12.jar,WEB-INF/lib/slf4j-jdk14-1.7.12.jar,{maven-dependencies}</Bundle-ClassPath> 
         <Embed-Dependency> 
          annotations,asm-all-repackaged,cglib, 
          aopalliance-repackaged,commons-lang3,commons-vfs2, 
          dom4j,gson,guava, 
          hk2-api,hk2-locator,hk2-utils, 
          jackson-core,jackson-annotations,jackson-databind, 
          jackson-dataformat-yaml,jackson-dataformat-xml, 
          jackson-datatype-joda,jackson-jaxrs-base, 
          jackson-jaxrs-json-provider, 
          jackson-module-jaxb-annotations, 
          javaee-web-api, 
          javassist, 
          javax.ws.rs-api, 
          javax.annotation-api,javax.inject,javax.json-api, 
          javax.servlet-api, 
          jaxen,jaxb-api, 
          jersey-client,jersey-common,jersey-server, 
          jersey-container-servlet-core, 
          jersey-media-multipart, 
          joda-convert,joda-time,jsch,jsr311-api,jzlib, 
          logback-classic,logback-core, 
          mongo-java-driver,maven,mimepull, 
          org.apache.felix.scr.annotations, 
          org.apache.servicemix.bundles.commons-httpclient, 
          org.osgi.compendium,org.osgi.core, 
          osgi-cdi-api,osgi-resource-locator, 
          pull-parser,reflections, 
          slf4j-api,slf4j-jdk14, 
          snakeyaml,stax2-api, 
          swagger-annotations,swagger-core,swagger-jaxrs, 
          swagger-jersey2-jaxrs,swagger-models, 
          validation-api; 
          scope=compile|runtime; 
         </Embed-Dependency> 
         <Embed-Transitive>true</Embed-Transitive> 
        </instructions> 
       </configuration> 
       <executions> 
        <execution> 
         <id>bundle-manifest</id> 
         <phase>process-classes</phase> 
         <goals> 
          <goal>manifest</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>bundle-install</id> 
         <phase>install</phase> 
         <goals> 
          <goal>install</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

工作迄今所做的:

  • 更新Glassfish的4.1包括泽西2 JAX-RS 2
  • 全部为 “提供”
  • 解决重复的依赖

回答

0

确保javax.ws新泽西Glassfish的依赖关系显着。 rs。*软件包由系统软件包提供。您可以使用Felix Gogo Remote Shell连接到glassfish的OSGi Module Management Subsystem,并使用内置命令查询注册表。