gpt4 book ai didi

java - 复制线程的 session

转载 作者:行者123 更新时间:2023-12-01 12:40:30 26 4
gpt4 key购买 nike

我需要有两个具有相同数据的 session 。我怎样才能做到这一点?

我的场景:用户在浏览网站时在 session 中积累了一些数据。他们点击一个按钮,现在我启动一个线程来记录我所得到的内容。不幸的是,我继承的代码传递 session ID 并使用它来访问数据。更不幸的是,此记录需要一些时间,因此用户经常点击其他页面并弄乱我正在记录的数据。

  • 用户需要一个可以继续玩的 session
  • 我的线程需要一个不会改变的 session

理想情况下,我能够将 session 数据复制到两个 session 中,每个 session 一个。 我真的很想要一个能够以某种方式为我提供这两个 session 的解决方案,因为重构代码将是一场噩梦。我意识到这似乎几乎是不可能的。我能想到的最接近的方法是复制数据,使 session 无效,为用户重新创建它,然后将无效的 session ID 传递给线程并希望它没有被清除——这不是我信任的计划。

如果没有其他方法,请提出替代方案。优先考虑重构的速度;否则,整体优雅。

有关实现的更多信息:线程发出许多请求,包括 session ID,每个请求都会根据 session 中收集的数据生成一个 PDF,该数据由线程合并到主文档中。

最佳答案

在你看来,我会在 session 中存储一些数据对象。当您需要启动线程来处理此数据时,您可以克隆数据对象,而不是 session 本身。当然,您必须编写一些代码来对此数据对象执行深层复制,但至少您的 session 将只是一个包装器(就像 session 通常那样)。

创建一个数据对象来存储线程所需的所有数据在某种程度上建立了某种“契约”,因此如果任何其他开发人员需要从该数据对象中添加或删除任何内容,他/她会注意到深层复制方法也必须更新(希望)。

关于java - 复制线程的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149243/

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