gpt4 book ai didi

java - 使用 session 序列化处理 Vaadin 中不可序列化的 Guava EventBus

转载 作者:行者123 更新时间:2023-11-29 04:46:56 24 4
gpt4 key购买 nike

我正在创建一个 Vaadin 应用程序,基于 QuickTickets 演示应用程序和其他示例,我决定使用 Guava 的 EventBus 进行事件处理,因此我在UI 实例级别。

由于我也在使用 Spring Boot 和 DevTools,它可以在不需要冷启动的情况下重新加载应用程序,我发现 Guava 的 EventBus 不是 Serializable,导致java.io.NotSerializableException

如何避免这种情况?

例如:

  1. 有没有办法围绕EventBus 制作一个Serializable 包装器?它需要保留已注册事件监听器的列表,并在 session 重新加载时将它们重新注册到 EventBus(我猜它需要一个 transient 引用 EventBus 所以它不会被序列化)。
  2. 既然我一直在使用 Spring,也许我可以使 EventBus 成为 UI 范围的 Bean?我想我仍然需要以某种方式处理听众的重新注册。

最佳答案

试图让 vaadin 在共享 session 环境中运行时,我也不得不面对这个问题。结合 Jose 出色的 SerializableProxy-annotation 和 vaadin 的 spring 集成库的修复(也感谢 xpoft 的另一个实现),它似乎可以运行。

您可以在此处找到示例应用程序:https://github.com/khauser/microservices4vaadin在前端微服务中

您还可以从 quickticket 仪表板中找到经过调整的 EventBus,它可以像这样 Autowiring /注入(inject):

@Autowired
@SerializableProxy
private MyEventBus myEventBus;

关于java - 使用 session 序列化处理 Vaadin 中不可序列化的 Guava EventBus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769821/

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