gpt4 book ai didi

java - VaadinSession 在销毁期间不拥有锁导致 AssertionError

转载 作者:行者123 更新时间:2023-11-28 22:47:36 24 4
gpt4 key购买 nike

我们在嵌入式 Tomcat 中运行 Vaadin(版本 8.5.1,vaadin-spring 版本 3.1)和 Spring(版本 5.1.1)。当我关闭 Tomcat 服务器时,我遇到了带有以下堆栈跟踪的 AssertionError:

Caused by: java.lang.AssertionError
at com.vaadin.server.VaadinSession.setAttribute(VaadinSession.java:1108) ~[vaadin-server-8.5.1.jar:8.5.1]
at com.vaadin.spring.internal.UIScopeImpl$UIStore.destroy(UIScopeImpl.java:246) ~[vaadin-spring-3.1.0.jar:3.1.0]
at com.vaadin.spring.internal.UIScopeImpl$UIStore.serviceDestroy(UIScopeImpl.java:260) ~[vaadin-spring-3.1.0.jar:3.1.0]
at com.vaadin.server.VaadinService.lambda$destroy$4(VaadinService.java:2115) ~[vaadin-server-8.5.1.jar:8.5.1]
at java.util.concurrent.ConcurrentHashMap$KeySetView.forEach(ConcurrentHashMap.java:4649) ~[?:1.8.0_191]
at java.util.Collections$SetFromMap.forEach(Collections.java:5476) ~[?:1.8.0_191]
at com.vaadin.server.VaadinService.destroy(VaadinService.java:2115) ~[vaadin-server-8.5.1.jar:8.5.1]
at com.vaadin.server.VaadinServlet.destroy(VaadinServlet.java:1440) ~[vaadin-server-8.5.1.jar:8.5.1]
at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1281) ~[tomcat-embed-core-9.0.12.jar:9.0.12]

Tomcat 似乎调用了 VaadinServlet 的 destory() 方法,而 VaadinServlet 又调用了 VaadinService.destroy()。因为这将调用 VaadinSession.setAttribute,所以它需要一个它不拥有的锁。使用调试器,我确认此时锁不属于任何人。

我做错了什么?我在网上搜索过,但似乎没有人遇到同样的问题。感谢您的帮助。

最佳答案

我认为这是 vaadin-spring 中的错误。我创建了 https://github.com/vaadin/spring/issues/383用于跟踪此案例。

关于java - VaadinSession 在销毁期间不拥有锁导致 AssertionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com