我在swagger中为Uber API示例生成了JAX-RS服务器代码。这是默认的Json,可以通过打开http://editor.swagger.io/#/
找到现在我尝试在websphere中部署它,但我看到以下消息:
Error 404: javax.servlet.ServletException: java.io.FileNotFoundException: SRVE0190E: File not found: /v1/swagger.json
当我访问此网址时:http://localhost:9080/swagger-jaxrs-server/v1/swagger.json
我没有对自动生成的代码进行任何更改。
我正在使用wlp-javaee7-8.5.5.9
这是我的server.xml文件的样子:
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>javaee-7.0</feature>
<feature>localConnector-1.0</feature>
<feature>apiDiscovery-1.0</feature>
</featureManager>
<basicRegistry id="basic" realm="BasicRealm">
<!-- <user name="yourUserName" password="" /> -->
</basicRegistry>
<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>
<applicationMonitor updateTrigger="mbean"/>
<webApplication id="swagger-jaxrs-server" location="swagger-jaxrs-server.war" name="swagger-jaxrs-server"/>
有人可以指出这里缺少的东西。
更新:1
此网址正常:http://localhost:8080/swagger-jaxrs-server/swagger.json。这是Json的一部分:
所以,我尝试了以下两个网址..但两个都没有用。
http://localhost:8080/swagger-jaxrs-server/estimates/price
http://localhost:8080/swagger-jaxrs-server/v1/estimates/price
我没有看到带有自动生成代码的web.xml。
答案 0 :(得分:1)
此路径几乎可以正常工作:http://localhost:9080/swagger-jaxrs-server/swagger.json
用于提供json文件(其中swagger-jaxrs-server是隐含的上下文根),尽管它与生成的war中的@ApplicationPath("/")
重叠。但是......
问题在于上下文根。
swagger.json有"basePath" : "/v1"
,但是在生成的类中没有包含任何内容来更改该基本路径以包含v1,并且servlet容器在如何分配上下文根时受到一些限制。 / p>
我建议调整生成的RestApplication,使其具有@ApplicationPath("/v1")
,在这种情况下http://localhost:9080/swagger-jaxrs-server/swagger.json
将用于检索json,http://localhost:9080/swagger-jaxrs-server/v1/products
将匹配预期的REST端点。