Yah*_*iya 0 java embedded-jetty swagger
有人可以让我知道这是否是使用嵌入式码头配置 Swagger 的正确方法。
public class TestMain {
public static void main(String[] args) throws Exception {
Server gs = new Server();
ServletContextHandler sch = gs.getServletContextHandler();
sch.addFilter(new FilterHolder(new RequestTrackerFilter()), "/*", EnumSet.of(DispatcherType.REQUEST));
sch.addFilter(new FilterHolder(new ActionIdFilter()), "/*", EnumSet.of(DispatcherType.REQUEST));
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(false);
resource_handler.setResourceBase("public/2.0");
ContextHandler context = new ContextHandler("/apitest");
context.setHandler(resource_handler);
ContextHandlerCollection contexts = new ContextHandlerCollection();
setupSwaggerContextHandler();
// context.getServletContext().addListener(new SwaggerInitializer());
contexts.setHandlers(new Handler[]{sch, context});
gs.getServer().setHandler(contexts);
gs.start();
}
private static ServletContextHandler setupSwaggerContextHandler() {
// Configure Swagger-core
final ServletHolder swaggerServletHolder = new ServletHolder(new JerseyJaxrsConfig());
swaggerServletHolder.setName("JerseyJaxrsConfig");
swaggerServletHolder.setInitParameter("api.version", "1.0.0");
swaggerServletHolder.setInitParameter("swagger.api.basepath", "http://localhost:9000/apitest");
swaggerServletHolder.setInitOrder(2);
final ServletContextHandler swaggerContextHandler = new ServletContextHandler();
swaggerContextHandler.setSessionHandler(new SessionHandler());
// Bind Swagger-core to the url HOST/api-docs
swaggerContextHandler.setContextPath("/api-docs");
swaggerContextHandler.addServlet(swaggerServletHolder, "/*");
return swaggerContextHandler;
}
}
Run Code Online (Sandbox Code Playgroud)
我无法看到任何输出使用
http://localhost:9000/apitest/api-docs
Run Code Online (Sandbox Code Playgroud)
我正在关注https://groups.google.com/forum/#!topic/swagger-swaggersocket/KHYESESD6c4 上的讨论
我玩了很多让 Swagger 在没有web.xml或 Spring 的情况下与嵌入式 Jetty 一起工作,最后得到了这个解决方案:https :
//github.com/SriramKeerthi/swagger-jersey2-jetty
如果我有足够的声誉,我会将其添加为评论。但这是我能想到的最简单的代码版本。你需要两部分:
Swagger Bean 配置:
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setResourcePackage(YourJerseyResourceClass.class.getPackage().getName());
beanConfig.setScan(true);
beanConfig.setBasePath("/");
beanConfig.setDescription("Sample API to demonstrate Swagger with Jersey2" +
" in an embedded Jetty instance, with no web.xml or Spring MVC.");
beanConfig.setTitle("Sample API");
Run Code Online (Sandbox Code Playgroud)添加:
ResourceConfig resourceConfig = new ResourceConfig();
// Add your resources and Swagger resources (ApiListingResource package)
resourceConfig.packages(YourJerseyResourceClass.class.getPackage().getName(), ApiListingResource.class.getPackage().getName());
ServletContainer servletContainer = new ServletContainer(resourceConfig);
ServletHolder servletHolder = new ServletHolder(servletContainer);
ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContextHandler.setContextPath("/");
servletContextHandler.addServlet(servletHolder, "/*");
Run Code Online (Sandbox Code Playgroud)您现在应该能够spec在/swagger.json端点看到 Swagger 。
PS irc.freenode.net 上#swagger 的团队非常出色,如果没有任何问题,您应该访问他们。
| 归档时间: |
|
| 查看次数: |
4604 次 |
| 最近记录: |