2016-09-20 44 views
0

我正在用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。

有什么想法?谢谢。

回答

0

是的,从今天起(2016年9月20日),Liberty的API发现使用1.5.3的Swagger注释版本,这就是为什么ApiParam的新属性抛出异常的原因。

如果您针对在wlp/dev/api/third-party/com.ibm.websphere.appserver.thirdparty.swagger.annotations_1.0.14.jar中找到的Liberty Swagger注释编译应用程序(您可以从此获得此免费通过下载基础WLP zip,然后运行“wlp/bin installUtility install apiDiscovery-1.0”),或者将你的maven依赖关系指向1.5.3 repo:https://mvnrepository.com/artifact/io.swagger/swagger-annotations/1.5.3,然后你会看到增量。修复它们之后,您应该能够愉快地在/ ibm/api/explorer中部署并查看它们。

我会把这个反馈给团队来更新jar,所以请继续关注下几个beta版。

+0

我将pom.xml改为指向1.5.3,并移回生成的Bootstrap类。我不再有例外,所以我可以得到json。但是,我仍然没有在/ ibm/api/explorer中看到我的API。我看到的唯一API是apiDiscovery。我还错过了什么? –

+0

你可以尝试使用编辑器代的“Jaxrs Spec”风格(而不是运动衫)吗?我们在一个月前贡献了它,并且它摆脱了经常干扰我们的API处理器的第三方依赖项。 – ArthurDM

相关问题