2016-02-29 98 views
0

我使用maag的swagger插件创建了REST Spring-MVC webservice。这里是我的POM的插件定义和目标:在websphere 8.5中部署Swagger生成的RESTFUL API

<plugin> 
      <groupId>io.swagger</groupId> 
      <artifactId>swagger-codegen-maven-plugin</artifactId> 
      <version>2.1.5</version> 
      <executions> 
       <execution> 
        <id>generate-spring-mvc</id> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <inputSpec>${project.build.sourceDirectory}/../resources/api.yaml</inputSpec> 
         <language>spring-mvc</language> 
         <modelPackage>com.myproject.ws.gen.model</modelPackage> 
         <apiPackage>com.myProject.ws.gen.api</apiPackage> 
         <templateDirectory>${project.build.sourceDirectory}/../templates/JavaSpringMVC</templateDirectory> 
         <configOptions> 
          <sourceFolder>src/main/java</sourceFolder> 
          <groupId>${project.groupId}</groupId> 
          <artifactId>${project.artifactId}</artifactId> 
          <version>${project.version}</version> 
         </configOptions> 
        </configuration> 
       </execution> 
       <execution> 
        <id>generate-yaml-dist</id> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <inputSpec>${project.build.sourceDirectory}/../resources/api.yaml</inputSpec> 
         <language>swagger</language> 
         <output>${project.build.directory}/site/api</output> 
         <addCompileSourceRoot>false</addCompileSourceRoot> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

插件需要那么api.yaml文件,至极包含API的定义和弹簧注释生成Java代码,另外,我使用CORS过滤器来管理请求。 当我在Websphere Liberty概要文件服务器中部署战争时,所有的代码都可以正常运行,但是当我尝试在完整的WebSphere 8.5中执行同样的操作时,我总是从服务器获取“文件未找到”按钮。

我检查了应用程序安装正确,REST API生成的.class文件打包在.war中,并且该请求由CORS过滤器处理,但由于某些原因,它仍然无法工作。

任何人都可以帮助我吗?

+1

您应该将解决方案作为答案发布,而不是编辑问题。 – fnt

回答

0

它可能在CORS支持或错误配置的CORS支持方面存在差异。

WebSphere Liberty支持在server.xml中使用cors标记进行配置。

在WebSphere Traditional 8.5中,您可能需要添加一些JAR文件,如here以及相关的应用程序配置。

+0

感谢您的回答,但我已经尝试过。我唯一不能做的就是在webapp中启用CORS,因为我没有前端。我的应用只包含在REST Web服务中。 但是,我已经尝试了测试cors网站,并且得到了相同的结果,“找不到文件”。因此,有可能是CORS配置或CORS与WAS 8.5集成的问题,但我不知道如何解决这个问题。 无论如何,谢谢 – JArgente

0

如果您使用的是标准的JEE servlet过滤器,那么它应该适用于传统的Liberty和WAS。它看起来并不像你在使用Liberty的本地CORS配置,所以我假定了一个常规的servlet过滤器。

您是否试图从不触发CORS的客户端(即:java客户端)访问您的端点,以确保应用程序确实在您的WAS传统环境中运行并可访问?一个手动的CORS过滤器应该总是工作,没有特别的配置,除了实际注册过滤器与您的应用程序。