通过jetty.xml Swagger UI配置

时间:2018-01-15 10:43:57

标签: java xml servlets jetty swagger

我正在尝试将Swagger UI添加到在Jetty上运行的Java EE项目中。我有一个编程配置示例,但我很难将其转换为XML,因为我的服务器配置是在jetty.xml文件中定义的。

我的问题是resourceBase属性的定义。

以下是示例配置

ResourceHandler rh = new ResourceHandler();
rh.setResourceBase(InsectopediaServer.class.getClassLoader()
                .getResource("META-INF/resources/webjars/swagger-ui/2.1.4").toURI().toString());
ContextHandler resourceContext = new ContextHandler();
resourceContext.setContextPath("/api/");
resourceContext.setHandler(rh);

ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[] { servletContext, resourceContext });

 server.setHandler(contexts);

这是我当前 jetty.xml 的相关部分:

<Set name="handler">
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
        <Set name="handlers">
            <Array type="org.eclipse.jetty.server.Handler">
                <Item>
                    <New class="org.eclipse.jetty.server.handler.ContextHandler">
                          <Set name="contextPath">/api</Set>
                          <Set name="handler">
                              <New class="org.eclipse.jetty.server.handler.ResourceHandler">
                                  <Set name="resourceBase"></Set>
                              </New>
                          </Set>
                    </New>
                  </Item>
                <Item>
                    <New id="Contexts"
                        class="org.eclipse.jetty.server.handler.ContextHandlerCollection" />
                </Item>
                <Item>
                    <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler" />
                </Item>
            </Array>
        </Set>
    </New>
</Set>

1 个答案:

答案 0 :(得分:1)

我不确定是否有更好的方法,但我相信简单方法虽然不是最灵活的,但是将swagger-ui文件复制到webapp目录中(最终到了“api”这样的文件夹) )。这将使swagger-ui无需进一步配置即可立即访问。