2016-03-15 5 views
6

Mam aplikację Spring uruchomioną na Tomcat 7. Po dodaniu WebSockets zacząłem widzieć następujące błędy w dziennikach podczas undeployment.

Inne niż dzienniki i dłuższy czas nierozliczenia (czeka na przekroczenie limitu czasu), wszystko działa dobrze.

Nie ma nic niezwykłego w dodanym kodzie WebSockets. Tylko pojedyncza @Controller, jedna podklasa AbstractWebSocketMessageBrokerConfigurer i jedna podklasa AbstractSecurityWebSocketMessageBrokerConfigurer.

Co się stało? Nie sądzę, że brakuje mi słoików. Widziałem klasę org.springframework.context.support.DefaultLifecycleProcessor w słoju spring-context-4.2.2-RELEASE, którą mam w moim WEB-INF/lib. Anoymous klasa DefaultLifecycleProcessor$1 też tam jest.


14 Mar 2016 23:25:34,508 INFO [context.support.DefaultLifecycleProcessor] Stopping beans in phase 2147483647 
14 Mar 2016 23:25:34,508 DEBUG [context.support.DefaultLifecycleProcessor] Asking bean 'stompWebSocketHandlerMapping' of type [class org.springframework.web.socket.server.support.WebSocketHandlerMapping] to stop 
14 Mar 2016 23:25:34,508 WARN [context.support.DefaultLifecycleProcessor] Failed to stop bean 'stompWebSocketHandlerMapping' 
java.lang.NoClassDefFoundError: org/springframework/context/support/DefaultLifecycleProcessor$1 
    at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:229) 
    at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:51) 
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:363) 
    at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:202) 
    at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:118) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:969) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:928) 
    at org.springframework.web.servlet.FrameworkServlet.destroy(FrameworkServlet.java:828) 
    at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1481) 
    at org.apache.catalina.core.StandardWrapper.stopInternal(StandardWrapper.java:1842) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5647) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1028) 
    at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1478) 
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1406) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1626) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:328) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassNotFoundException: org.springframework.context.support.DefaultLifecycleProcessor$1 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569) 
    ... 25 more 
14 Mar 2016 23:25:34,509 DEBUG [context.support.DefaultLifecycleProcessor] Asking bean 'subProtocolWebSocketHandler' of type [class org.springframework.web.socket.messaging.SubProtocolWebSocketHandler] to stop 
14 Mar 2016 23:25:34,509 WARN [context.support.DefaultLifecycleProcessor] Failed to stop bean 'subProtocolWebSocketHandler' 
java.lang.NoClassDefFoundError: org/springframework/context/support/DefaultLifecycleProcessor$1 
    at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:229) 
    at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:51) 
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:363) 
    at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:202) 
    at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:118) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:969) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:928) 
    at org.springframework.web.servlet.FrameworkServlet.destroy(FrameworkServlet.java:828) 
    at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1481) 
    at org.apache.catalina.core.StandardWrapper.stopInternal(StandardWrapper.java:1842) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5647) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1028) 
    at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1478) 
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1406) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1626) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:328) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
    at java.lang.Thread.run(Thread.java:745) 
14 Mar 2016 23:25:34,509 DEBUG [context.support.DefaultLifecycleProcessor] Asking bean 'simpAnnotationMethodMessageHandler' of type [class org.springframework.web.socket.messaging.WebSocketAnnotationMethodMessageHandler] to stop 
14 Mar 2016 23:25:34,509 WARN [context.support.DefaultLifecycleProcessor] Failed to stop bean 'simpAnnotationMethodMessageHandler' 
java.lang.NoClassDefFoundError: org/springframework/context/support/DefaultLifecycleProcessor$1 
    at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:229) 
    at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:51) 
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:363) 
    at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:202) 
    at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:118) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:969) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:928) 
    at org.springframework.web.servlet.FrameworkServlet.destroy(FrameworkServlet.java:828) 
    at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1481) 
    at org.apache.catalina.core.StandardWrapper.stopInternal(StandardWrapper.java:1842) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5647) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1028) 
    at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1478) 
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1406) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1626) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:328) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
    at java.lang.Thread.run(Thread.java:745) 
14 Mar 2016 23:25:34,509 DEBUG [context.support.DefaultLifecycleProcessor] Asking bean 'simpleBrokerMessageHandler' of type [class org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler] to stop 
14 Mar 2016 23:25:34,509 WARN [context.support.DefaultLifecycleProcessor] Failed to stop bean 'simpleBrokerMessageHandler' 
java.lang.NoClassDefFoundError: org/springframework/context/support/DefaultLifecycleProcessor$1 
    at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:229) 
    at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:51) 
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:363) 
    at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:202) 
    at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:118) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:969) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:928) 
    at org.springframework.web.servlet.FrameworkServlet.destroy(FrameworkServlet.java:828) 
    at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1481) 
    at org.apache.catalina.core.StandardWrapper.stopInternal(StandardWrapper.java:1842) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5647) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1028) 
    at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1478) 
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1406) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1626) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:328) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
    at java.lang.Thread.run(Thread.java:745) 
14 Mar 2016 23:25:34,510 DEBUG [context.support.DefaultLifecycleProcessor] Asking bean 'userDestinationMessageHandler' of type [class org.springframework.messaging.simp.user.UserDestinationMessageHandler] to stop 
14 Mar 2016 23:25:34,510 WARN [context.support.DefaultLifecycleProcessor] Failed to stop bean 'userDestinationMessageHandler' 
java.lang.NoClassDefFoundError: org/springframework/context/support/DefaultLifecycleProcessor$1 
    at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:229) 
    at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:51) 
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:363) 
    at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:202) 
    at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:118) 
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:969) 
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:928) 
    at org.springframework.web.servlet.FrameworkServlet.destroy(FrameworkServlet.java:828) 
    at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1481) 
    at org.apache.catalina.core.StandardWrapper.stopInternal(StandardWrapper.java:1842) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5647) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1028) 
    at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1478) 
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1406) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1626) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:328) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
    at java.lang.Thread.run(Thread.java:745) 
14 Mar 2016 23:26:04,511 WARN [context.support.DefaultLifecycleProcessor] Failed to shut down 5 beans with phase value 2147483647 within timeout of 30000: [stompWebSocketHandlerMapping, subProtocolWebSocketHandler, simpAnnotationMethodMessageHandler, simpleBrokerMessageHandler, userDestinationMessageHandler] 
+0

czy jesteś pewny, że używasz tej samej wersji sprężynowej dla wszystkich modułów? –

Odpowiedz

2

Zapakowałeś to jako słoik tłuszczu i przenosisz zaktualizowany słoik PRZED zamknięciem uruchomionej aplikacji? To właśnie mi się przydarzyło, ponieważ używałem ansible do pobrania słoika z grubsza, z programem obsługi, aby ponownie uruchomić aplikację, jeśli słoik się zmienił.

Rozwiązałem go, najpierw przygotowując nowy słoik, a jeśli jest inny, zatrzymując aplikację przed skopiowaniem zestrzelonego słoika.

See here for more info

0

Chyba brakuje słoika wiosna-websocket na ścieżce klas. Ten błąd nie jest związany z biblioteką kontekstu sprężystości, kod podczas uruchamiania/zatrzymywania nie jest w stanie znaleźć komponentu, który powinien zostać uruchomiony/zatrzymany. Jak wspomniałeś websockets, spring-websocket musi załatwić sprawę. Lub nawet bibliotekę org.springframework.integration.

Powiązane problemy