2016-02-29 69 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過濾器應該總是工作,沒有特別的配置,除了實際註冊過濾器與您的應用程序。

相關問題