2016-02-05 122 views
0

我一直在嘗試使用Swagger生成REST API文檔。Swagger + Jersey + Grizzly

跟着link,但無法使其工作。得到下面的錯誤的

12:54:39.859 [main] INFO org.reflections.Reflections - Reflections took 63 ms to scan 1 urls, producing 73 keys and 122 values 
    12:54:39.906 [main] DEBUG i.s.jaxrs.ext.SwaggerExtensions - adding extension [email protected] 
    12:54:39.906 [main] DEBUG io.swagger.jaxrs.Reader - picking up response class from method public rest.beans.UserBean rest.frontend.UserResource.opAllocateUser(rest.beans.UserBean,javax.ws.rs.core.Request) 
    12:54:39.921 [main] DEBUG i.s.c.ModelConverterContextImpl - resolveProperty class rest.beans.UserBean 
    12:54:39.921 [main] DEBUG io.swagger.jackson.ModelResolver - resolveProperty [simple type, class rest.beans.UserBean] 
    12:54:39.921 [main] DEBUG i.s.c.ModelConverterContextImpl - resolve [simple type, class rest.beans.UserBean] 
    12:54:39.921 [main] DEBUG i.s.c.ModelConverterContextImpl - trying extension [email protected] 
    12:54:39.921 [main] DEBUG io.swagger.jackson.ModelResolver - Can't check class [simple type, class rest.beans.UserBean],  rest.beans.UserBean 
    12:54:39.937 [main] DEBUG i.s.c.ModelConverterContextImpl - defineModel UserBean [email protected] 
    12:54:39.937 [main] DEBUG i.s.c.ModelConverterContextImpl - resolveProperty [simple type, class java.lang.String] 
    12:54:39.937 [main] DEBUG io.swagger.jackson.ModelResolver - Can't check class [simple type, class java.lang.String], java.lang.String 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG i.s.c.ModelConverterContextImpl - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - Can't check class [simple type, class java.lang.String], java.lang.String 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG io.swagger.converter.ModelConverters - ModelConverters readAll from class rest.beans.UserBean 
    12:54:39.952 [main] DEBUG i.s.c.ModelConverterContextImpl - resolve class rest.beans.UserBean 
    12:54:39.952 [main] DEBUG i.s.c.ModelConverterContextImpl - trying extension [email protected] 
    12:54:39.952 [main] DEBUG i.s.c.ModelConverterContextImpl - defineModel UserBean [email protected] 
    12:54:39.952 [main] DEBUG i.s.c.ModelConverterContextImpl - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - Can't check class [simple type, class java.lang.String], java.lang.String 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG i.s.c.ModelConverterContextImpl - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - Can't check class [simple type, class java.lang.String], java.lang.String 
    12:54:39.952 [main] DEBUG io.swagger.jackson.ModelResolver - resolveProperty [simple type, class java.lang.String] 
    12:54:39.952 [main] DEBUG io.swagger.jaxrs.Reader - getParameters for [simple type, class rest.beans.UserBean] 
    12:54:39.952 [main] DEBUG io.swagger.jaxrs.Reader - trying extension [email protected] 

接下來搜索和發現link最接近我的問題。再次遵循它,但仍然得到上述錯誤。我看不到swagger.json正在生成。

版本信息

Jersey : 2.22.1 
Jackson : 2.6.3 
Swagger : 1.5.6 
Grizzly : 2.3.23 

我失去了它,使其工作需要一些配置?還是我需要更多的圖書館?

感謝

+1

這些似乎調試消息。您是否嘗試訪問http:// /swagger-ui.html? – sag

+1

是的,當調試沒有錯誤時,它很難調試。看看[這篇文章](http://stackoverflow.com/a/33684719/2587435) –

+0

@peeskillet:該鏈接解決了swagger.json問題。謝謝。 – rawat

回答

0
Statement : Generate Swagger UI for the listing of all the REST APIs through Grizzly and Jersey Application. 



1. Add following dependency in pom.xml – 

<dependency> 
<groupId>io.swagger</groupId> 
<artifactId>swagger-jersey2-jaxrs</artifactId> 
<version>1.5.9</version> 
</dependency> 

2. Bundle Swagger UI and docs folder through you main application class using the below code – 

package com.main; 

import java.io.IOException; 
import java.net.URI; 
import org.glassfish.grizzly.http.server.CLStaticHttpHandler; 
import org.glassfish.grizzly.http.server.HttpServer; 
import org.glassfish.grizzly.http.server.ServerConfiguration; 
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; 
import org.glassfish.jersey.jackson.JacksonFeature; 
import org.glassfish.jersey.server.ResourceConfig; 
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; 
import io.swagger.jaxrs.config.BeanConfig; 

public class MainApp { 

// Base URI the Grizzly HTTP server will listen on 

public static final URI BASE_URI = URI.create(「http://0.0.0.0:8080&#8221;); 

public static HttpServer getLookupServer() { 
String resources = 「com.main」; 
BeanConfig beanConfig = new BeanConfig(); 
beanConfig.setVersion(「1.0.1」); 
beanConfig.setSchemes(new String[] { 「http」 }); 
beanConfig.setBasePath(「」); 
beanConfig.setResourcePackage(resources); 
beanConfig.setScan(true); 
final ResourceConfig resourceConfig = new ResourceConfig(); 
resourceConfig.packages(resources); 
resourceConfig.register(io.swagger.jaxrs.listing.ApiListingResource.class); 
resourceConfig.register(io.swagger.jaxrs.listing.SwaggerSerializers.class); 
resourceConfig.register(JacksonFeature.class); 
resourceConfig.register(JacksonJsonProvider.class); 
return GrizzlyHttpServerFactory.createHttpServer(BASE_URI, resourceConfig); 
} 

public static void main(String[] args) throws IOException { 
final HttpServer server = getLookupServer(); 
server.start(); 
ClassLoader loader = MainApp.class.getClassLoader(); 
CLStaticHttpHandler docsHandler = new CLStaticHttpHandler(loader, 「swagger-ui/」); 
docsHandler.setFileCacheEnabled(false); 
ServerConfiguration cfg = server.getServerConfiguration(); 
cfg.addHttpHandler(docsHandler, 「/docs/」); 
} 
} 

3. Take the latest code of swagger-ui. Copy all the content of the dist folder and create a folder named swagger-ui inside src/main/resources and paste all the copied contents. Now change the url in index.file which is inside the copied folder like below – 

url: http://0.0.0.0:8080/swagger.json 

4. Lastly, annotate your controller with @Api and @ApiOperation. 

Hope it works. Now to run your Grizzly Jersey Application, go to browser and type localhost:8080/docs/. You will see Swagger UI having all the details of your REST APIs. 

Happy coding and sharing as well. You can find the [git](https://guptakumartanuj.wordpress.com/2017/07/24/generate-swagger-ui-through-grizzly-and-jersey-application/) repo for the above implementation. 
相關問題