我正在用swagger生成的服务器(从editor.swagger.io导出)试验apiDiscovery-1.0功能。 pom.xml文件包括apiDiscovery-1.0 Liberty功能是否支持swagger 1.5.4?
<swagger-core-version>1.5.9</swagger-core-version>
如果我推产生的战争,而不指定server.xml文件,我的应用程序只是战争,我能得到到http://.eu-gb。 mybluemix.net/v1/swagger.json
同样的,如果我把战争与包括
<feature>apiDiscovery-1.0</feature>
在这种情况下,在http指点时,我得到以下异常的server.xml中不会发生: //.eu-gb.mybluemix.net/v1/swagger.json
2016-09-21T00:34:15.05+0200 [App/0] ERR [ERROR ] SRVE0777E: Exception thrown by application class 'org.glassfish.jersey.servlet.WebComponent.serviceImpl:489'
2016-09-21T00:34:15.05+0200 [App/0] ERR javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: io/swagger/annotations/ApiParam.examples()Lio/swagger/annotations/Example; (loaded from file:/home/vcap/app/.liberty/dev/api/third-party/com.ibm.websphere.appserver.thirdparty.swagger.annotations_1.0.14.jar by [email protected][com.ibm.websphere.appserver.thirdparty.swagger.annotations:1.0.14.cl160320160831-1555(id=113)]) called from class io.swagger.util.ParameterProcessor$ApiParamWrapper (loaded from file:/home/vcap/app/wlp/usr/servers/defaultServer/apps/servicemanager-jaxrs-server-1.0.0.war/WEB-INF/lib/swagger-core-1.5.9.jar by [email protected]).
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
2016-09-21T00:34:15.05+0200 [App/0] ERR at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
2016-09-21T00:34:15.05+0200 [App/0] ERR at [internal classes]
2016-09-21T00:34:15.05+0200 [App/0] ERR at io.swagger.api.ApiOriginFilter.doFilter(ApiOriginFilter.java:16)
2016-09-21T00:34:15.05+0200 [App/0] ERR at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
2016-09-21T00:34:15.05+0200 [App/0] ERR at [internal classes]
2016-09-21T00:34:15.05+0200 [App/0] ERR Caused by: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: io/swagger/annotations/ApiParam.examples()Lio/swagger/annotations/Example; (loaded from file:/home/vcap/app/.liberty/dev/api/third-party/com.ibm.websphere.appserver.thirdparty.swagger.annotations_1.0.14.jar by [email protected][com.ibm.websphere.appserver.thirdparty.swagger.annotations:1.0.14.cl160320160831-1555(id=113)]) called from class io.swagger.util.ParameterProcessor$ApiParamWrapper (loaded from file:/home/vcap/app/wlp/usr/servers/defaultServer/apps/servicemanager-jaxrs-server-1.0.0.war/WEB-INF/lib/swagger-core-1.5.9.jar by [email protected]).
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:278)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:260)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:509)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:334)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
2016-09-21T00:34:15.05+0200 [App/0] ERR at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
2016-09-21T00:34:15.05+0200 [App/0] ERR ... 9 more
2016-09-21T00:34:15.05+0200 [App/0] ERR Caused by: java.lang.NoSuchMethodError: io/swagger/annotations/ApiParam.examples()Lio/swagger/annotations/Example; (loaded from file:/home/vcap/app/.liberty/dev/api/third-party/com.ibm.websphere.appserver.thirdparty.swagger.annotations_1.0.14.jar by [email protected][com.ibm.websphere.appserver.thirdparty.swagger.annotations:1.0.14.cl160320160831-1555(id=113)]) called from class io.swagger.util.ParameterProcessor$ApiParamWrapper (loaded from file:/home/vcap/app/wlp/usr/servers/defaultServer/apps/servicemanager-jaxrs-server-1.0.0.war/WEB-INF/lib/swagger-core-1.5.9.jar by [email protected]).
如果我评论在server.xml线
<feature>apiDiscovery-1.0</feature>
,并再次推应用程序,它的工作原理,我回来了swagger.json文件。
请注意,/ ibm/api/explorer不显示我在swagger.json中定义的API。我猜这个例外是根本原因。 后来我发现是在异常报告招摇的版本:
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: io/swagger/annotations/ApiParam.examples()Lio/swagger/annotations/Example; (loaded from file:/home/vcap/app/.liberty/dev/api/third-party/com.ibm.websphere.appserver.thirdparty.swagger.annotations_1.0.14.jar by
这是从构建不同的版本:1.5.9。
有什么想法?谢谢。
我将pom.xml改为指向1.5.3,并移回生成的Bootstrap类。我不再有例外,所以我可以得到json。但是,我仍然没有在/ ibm/api/explorer中看到我的API。我看到的唯一API是apiDiscovery。我还错过了什么? –
你可以尝试使用编辑器代的“Jaxrs Spec”风格(而不是运动衫)吗?我们在一个月前贡献了它,并且它摆脱了经常干扰我们的API处理器的第三方依赖项。 – ArthurDM