Java 复制线程的会话
我需要有两个具有相同数据的会话。我怎样才能做到这一点 我的场景:用户在遍历站点时在会话中积累了一些数据。他们点击一个按钮,现在我发出一个线程来记录我得到了什么。不幸的是,我继承的代码传递会话ID并使用它访问数据。更不幸的是,此录制需要一些时间,因此用户经常点击其他页面,并将我正在录制的数据弄乱Java 复制线程的会话,java,multithreading,jsp,session,Java,Multithreading,Jsp,Session,我需要有两个具有相同数据的会话。我怎样才能做到这一点 我的场景:用户在遍历站点时在会话中积累了一些数据。他们点击一个按钮,现在我发出一个线程来记录我得到了什么。不幸的是,我继承的代码传递会话ID并使用它访问数据。更不幸的是,此录制需要一些时间,因此用户经常点击其他页面,并将我正在录制的数据弄乱 用户需要一个可以继续玩的会话 我的线程需要一个不会改变的会话 理想情况下,我能够将会话数据复制到两个会话中,每个会话一个我真的希望有一个解决方案能够以某种方式提供这两个会话,因为重构代码将是一场噩梦。
- 用户需要一个可以继续玩的会话
- 我的线程需要一个不会改变的会话
关于实现的更多信息:线程发出大量请求,包括会话ID,每个请求根据会话中收集的数据生成一个PDF,该数据由线程合并到一个主文档中。在您看来,我会在会话中存储一些数据对象。当需要启动线程来处理此数据时,可以克隆数据对象,而不是会话本身。当然,您必须编写一些代码来对该数据对象执行深度复制,但至少您的会话只是一个包装器(会话通常是这样的)
创建一个数据对象来存储线程所需的所有数据在某种程度上建立了某种“契约”,因此,如果任何其他开发人员需要添加或删除此数据对象中的任何内容,他/她将注意到深度复制方法也必须更新(希望如此).如果会话中的对象是可变的,并且可能会被后续的用户操作修改,则会话的浅拷贝可能是不够的。你不能收集一组足够后台任务完成其工作的最少信息吗?与会话中的某些元素的数据结构相比,此线程中的进程需要实际会话是没有意义的。你们将如何使用会话ID处理请求?会话ID如何请求线程激发?这些人也需要访问数据。