SpringFox Swagger не работает должным образом на IBM Liberty 19.0.0.1

Прилагается ниже (Swagger на Tomcat) (щелкните, чтобы увеличить) - Пользовательский интерфейс Swagger моего приложения на Tomcat 9 введите описание изображения здесь

Прикреплено (Swagger on Liberty) (щелкните, чтобы увеличить) - Пользовательский интерфейс Swagger моего приложения на Liberty 19.0.0.1 введите описание изображения здесь

В Tomcat, как можно видеть, отчетливо видно тело ответа 200 и выполнение опции «Попробовать» безупречно.

Однако в Liberty тело ответа 200 не отображается, и выполнение «Попробовать» приводит к тому, что тело ответа заполнено ошибками следующим образом (усечено):

<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

Файл server.xml My Liberty выглядит следующим образом:

<?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) с Spring Integration, Spring Security, Spring REST Docs, Springfox 3.0.0-SNAPSHOT и Log4j 2.

Может ли кто-нибудь помочь указать на основную причину, по которой Liberty не может отобразить ответ Swagger или предоставить функцию «Попробовать»? Как я уже сказал, то же самое работает и на Tomcat 9.

С уважением, Бхарат


person bmylavar    schedule 09.03.2019    source источник


Ответы (1)


Эта проблема может быть связана с развертыванием приложения SpringBoot 2.1.3 на Liberty 19.0.0.1, которое поддерживает приложения SpringBoot 1.5 и 2.0, но не имеет возможности тонкие встроенные серверные зависимости от приложений Spring Boot 2.1. С тех пор эта возможность была добавлена ​​в Liberty 19.0.0.2. Пожалуйста, обновите Liberty 19.0.0.2 и повторите свой сценарий. И если обновление не решает проблему, я открыл проблему открытой свободы 6870 для дальнейшего обсуждения и открытия.

person Dave Zavala    schedule 12.03.2019
comment
Моя компания не разрешила обновление до Liberty 19.0.0.2. Поэтому я перешел на Spring Boot 2.0 (что хорошо для моего проекта) на Liberty 19.0.0.1 у меня сработало! - person bmylavar; 22.03.2019