我已经使用swagger插件为maven创建了一个REST Spring-MVC web服务。这是我的pom中的插件定义和目标:
<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的定义并使用spring注释生成java代码,此外,我使用CORS过滤器来管理请求。 当我在Websphere Liberty概要文件服务器中部署war时,所有运行都运行正常,但是当我尝试在完整的WebSphere 8.5中执行相同操作时,我总是从服务器获得“File not found”按钮。
我已经检查过应用程序是否正确安装,并且生成的REST API的.class文件打包在.war中,并且请求由CORS过滤器处理,但由于某种原因它仍然无效。
任何人都可以帮助我吗?
答案 0 :(得分:0)
可能区别在于CORS支持或错误配置的CORS支持。
在WebSphere Liberty中,使用cors标记在server.xml中配置支持。
在WebSphere Traditional 8.5中,您可能需要添加一些here所述的JAR文件以及相关的应用程序配置。
答案 1 :(得分:0)
如果您使用的是标准的JEE servlet过滤器,那么它应该适用于Liberty和WAS传统。看起来你并没有使用Liberty的原生CORS配置,所以我假设一个常规的servlet过滤器。
您是否尝试从不触发CORS的客户端(即:Java客户端)访问您的端点,以确保该应用程序确实在您的WAS传统环境中运行并可访问?除了在您的应用程序中实际注册过滤器之外,手动CORS过滤器始终无需特殊配置。