SpringFox Swagger 在 IBM Liberty 19.0.0.1 上未按预期工作

SpringFox Swagger not working as expected on IBM Liberty 19.0.0.1

附在下方(Swagger on Tomcat)(点击放大)- 我的应用程序的 Swagger UI on Tomcat 9

已附加(Swagger on Liberty)(点击放大)- 我的应用程序在 Liberty 19.0.0.1 上的 Swagger UI

在Tomcat中,可以看出,200个响应主体清晰显示,"Try it out"选项的执行是完美的。

但是,在 Liberty 中,未显示 200 响应主体,"Try it out" 执行结果导致响应主体充满错误,如下所示(截断):

<H1>Error Page Exception</H1>
<H4>SRVE0260E: The server cannot use the error page specified for your application to handle the Original Exception printed below.</H4>
<BR><H3>Original Exception: </H3>
<B>Error Message: </B>Unauthorized<BR>
<B>Error Code: </B>401<BR>
<B>Target Servlet: </B>dispatcherServlet<BR>
<B>Error Stack: </B><BR>
com.ibm.ws.webcontainer.webapp.WebAppErrorReport: Unauthorized

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendError(WebAppDispatcherContext.java:630)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendError(WebAppDispatcherContext.java:648)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendError(SRTServletResponse.java:1328)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:164)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:164)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.util.OnCommittedResponseWrapper.sendError(OnCommittedResponseWrapper.java:119)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint.commence(BasicAuthenticationEntryPoint.java:61)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.authentication.DelegatingAuthenticationEntryPoint.commence(DelegatingAuthenticationEntryPoint.java:95)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.access.ExceptionTranslationFilter.sendStartAuthentication(ExceptionTranslationFilter.java:213)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.access.ExceptionTranslationFilter.handleSpringSecurityException(ExceptionTranslationFilter.java:185)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:141)

<BR>&nbsp;&nbsp;&nbsp;&nbsp;
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
...
...
more

同时,Liberty控制台出现如下错误(更多请往右滚动):

Error reported: 406

[ERROR   ] Error Page Exception:
                                                                                                               0-0

                                                                                                               Error Page Exception
                                                                                                               com.ibm.ws.webcontainer.webapp.WebAppErrorReport: SRVE0295E

我的Liberty的server.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>webProfile-8.0</feature>
        <feature>springBoot-2.0</feature>
        <feature>servlet-4.0</feature>
    </featureManager>

    <basicRegistry/>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint id="defaultHttpEndpoint"
                  httpPort="9090"
                  httpsPort="9443" />

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>

</server>

我的应用程序使用 Java 8,Spring Boot (2.1.3) with Spring Integration,Spring Security,Spring REST Docs,Springfox 3.0.0-SNAPSHOT 和 Log4j 2.

有人可以帮助指出 Liberty 无法显示 Swagger 响应或提供 "Try it out" 功能的根本原因吗?就像我说的,在 Tomcat 9.

上同样运行顺利

真诚的, 巴拉斯

这个问题可能是因为在Liberty 19.0.0.1上部署了一个SpringBoot 2.1.3应用,支持SpringBoot 1.5和2.0应用,但是没有能力thin embedded server dependencies from Spring Boot 2.1 applications. This capability has since been added to Liberty 19.0.0.2. Please update to Liberty 19.0.0.2 and retry your scenario. And if the update does not resolve the problem, I've opened open-liberty issue 6870进一步讨论和发现。