如何在underow java中添加OAuth2配置来swagger

时间:2017-02-28 04:36:45

标签: java swagger undertow

我正在关注此文档https://github.com/swagger-api/swagger-core/wiki/1.3--1.5-Migration#setting-up-additional-information-authorization-info

在这里他们要求添加bootstrap servlet,我的问题是我在

中添加这个bootstrap类

我的引导类

@Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);



        Info info = new Info()
                .title("Swagger Petstore")
                .description("This is a sample server Petstore server.  You can find out more about Swagger " +
                        "at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).  For this sample, " +
                        "you can use the api key `special-key` to test the authorization filters.")
                .termsOfService("http://swagger.io/terms/")
                .contact(new Contact()
                        .email("apiteam@swagger.io"))
                .license(new License()
                        .name("Apache 2.0")
                        .url("http://www.apache.org/licenses/LICENSE-2.0.html"));

        ServletContext context = config.getServletContext();
        Swagger swagger = new Swagger()
                .info(info);
        swagger.securityDefinition("testauth",
                new OAuth2Definition()
                        .implicit("http://localhost:8002/oauth/dialog")
                        .scope("email", "Access to your email address")
                        .scope("pets", "Access to your pets"));
        swagger.tag(new Tag()
                .name("pet")
                .description("Everything about your Pets")
                .externalDocs(new ExternalDocs("Find out more", "http://swagger.io")));
        swagger.tag(new Tag()
                .name("store")
                .description("Access to Petstore orders"));
        swagger.tag(new Tag()
                .name("user")
                .description("Operations about user")
                .externalDocs(new ExternalDocs("Find out more about our store", "http://swagger.io")));
        context.setAttribute("swagger", swagger);
    }

我的app.class

 @ApplicationPath("/")
    public class App extends javax.ws.rs.core.Application {


        public App() {
            this.injector = injector;
            BeanConfig beanConfig = new BeanConfig();
            beanConfig.setVersion("1.0.2");
            beanConfig.setSchemes(new String[] { "http" });
            beanConfig.setHost("localhost:7004");
            beanConfig.setBasePath("test");
            beanConfig.setResourcePackage("com.testpacakge");
            beanConfig.setScan(true);
        }

@Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new HashSet<Class<?>>();
        resources.add(Bootstrap.class);
 /// my other resorces
}

@Override
    public Set<Object> getSingletons() {
        final Set<Object> objects = new HashSet<>();

        objects.add(injector.getInstance(Bootstrap.class));
}
        }

并在Main.class中

deploymentInfoObj.addServlet(Servlets.servlet("Bootstrap", Bootstrap.class)
.addMapping("/Bootstrap"));

我正在添加Bootstrap in,Application和main class。

但这个设置没有加载swagger。

有什么想法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

添加

.setLoadOnStartup(1)

在Servlet部分,修复了

deploymentInfoObj.addServlet(Servlets.servlet("Bootstrap", Bootstrap.class)
.addMapping("/Bootstrap").setLoadOnStartup(1));