gpt4 book ai didi

hibernate - WebSocket(Atmosphere)与每个请求问题(Hibernate 和 Shiro)- Vaadin

转载 作者:行者123 更新时间:2023-12-02 04:04:06 29 4
gpt4 key购买 nike

框架 Vaadin 在版本 7 中使用 Atmosphere 启用推送逻辑,并且显然还启用系统中可用的“全面”通信,即还可以根据浏览器通常发出的请求。

当 Atmosphere 无法使用 WebSockets 时(例如,当 Jetty 未配置 websocket 支持时),这一切都很好,因此必须依赖长轮询或类似的 HTTP“假”推送方法,这些方法看起来很长Servlet 调用。

但是,当实际使用 WebSocket 时, Shiro Hibernate 大声提示。

问题是 Servlet 过滤器不会“启动”WebSocket。 Hibernate 使用 spring 的 OpenSessionInViewFilter 创建每个请求的连接,该连接还通过在退出时提交/关闭它来充当事务边界。 Shiro 使用 AbstractShiroFilter 的扩展创建 WebSubject 对象 - 它甚至将 ServletRequest 和 ServletResponse 对象粘贴到主题中 - 并在退出时清除“ThreadContext”(它只是一个 ThreadLocal)。

这里有人有什么好主意吗?我希望 Atmosphere 具有类似的“try-finally”-如“filterChain.continue”逻辑,以便可以重新创建上述的进入/退出逻辑。然而,正如我到目前为止所看到的,Atmosphere 没有这种可用的过滤功能。

我很想听听建议。

最佳答案

也许你可以尝试用 Atmosfere's interceptors 替换 servlet API 过滤器?我认为它们对您的情况很有用。

关于hibernate - WebSocket(Atmosphere)与每个请求问题(Hibernate 和 Shiro)- Vaadin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595553/

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