如何在Websphere中部署Swagger生成的JAXRS服务器代码

时间:2016-09-12 22:48:23

标签: java java-ee websphere swagger websphere-liberty

我在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的一部分:

enter image description here

所以,我尝试了以下两个网址..但两个都没有用。

http://localhost:8080/swagger-jaxrs-server/estimates/price
http://localhost:8080/swagger-jaxrs-server/v1/estimates/price

我没有看到带有自动生成代码的web.xml。

1 个答案:

答案 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端点。