wake-up-neo.com

Das Aufrufen von [asyncError ()] ist für eine Anforderung mit dem Async-Status [MUST_DISPATCH] nicht gültig.

env:
Fall 1:
client: springboot (1.5.12.RELEASE) + spring-boot-admin-starter-client 1.5.7

admin: springboot (2.1.1.RELEASE) + springboot-admin-starter-server 2.1.1

wenn ich den Client starte und die Admin-App aktualisiere. Der Fehler lautet "Der Aufruf von [asyncError ()] ist für eine Anforderung mit dem Async-Status [MUST_DISPATCH] nicht gültig".

case2:
(2.1.1.RELEASE) Sowohl der Client als auch der Server verwenden dieselbe Version und weisen denselben Fehler auf.

Detaillierte Fehler sind wie folgt:

2018-12-04 11:10:40.129 ERROR 2572 --- [nio-9090-exec-5] o.a.catalina.connector.CoyoteAdapter     : Exception while processing an asynchronous request

Java.lang.IllegalStateException: Calling [asyncError()] is not valid for a request with Async state [MUST_DISPATCH]
    at org.Apache.coyote.AsyncStateMachine.asyncError(AsyncStateMachine.Java:440) ~[Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.coyote.AbstractProcessor.action(AbstractProcessor.Java:512) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.coyote.Request.action(Request.Java:430) ~[Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.catalina.core.AsyncContextImpl.setErrorState(AsyncContextImpl.Java:382) ~[Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.Java:239) ~[Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.Java:241) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.Java:53) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.Java:791) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.Tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.Java:1417) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at org.Apache.Tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.Java:49) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_162]
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_162]
    at org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61) [Tomcat-embed-core-9.0.13.jar:9.0.13]
    at Java.lang.Thread.run(Unknown Source) [na:1.8.0_162]
13
xi wang

Versuche JETTY einzuschalten, es hat mir geholfen.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>spring-boot-starter-Tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
2
AlbusLupus

SBA-UI verwendet ein langes Polling. Wenn der Browser die Verbindung schließt und der Server versucht, Daten darauf zu schreiben, wird die obige Ausnahme protokolliert. Alles ist ganz normal. Es sollte keine Auswirkungen auf die Anwendung haben. Für weitere Informationen: https://github.com/spring-projects/spring-boot/issues/15057

1
joshiste

Tatsächlich gibt es eine einfache Lösung: Verwenden Sie nicht den Tomcat-Servlet-Container, sondern führen Sie den Admin-Server in einem reaktiven Setup aus, wie z.

@SpringBootApplication
@EnableAdminServer
public class AdminServer {
    public static void main(String[] args) {
        new SpringApplicationBuilder(AdminServer.class)
        .web(WebApplicationType.REACTIVE)
        .run(args);
    }
}

Auf diese Weise erhalte ich keine Fehler.

0
Gregor