使用内存DB而不是ThreadLocal有什么优缺点

时间:2010-03-24 02:18:34

标签: java thread-local

到目前为止,我们一直在使用ThreadLocal来携带一些数据,以免混乱API。但是下面是使用我不喜欢的本地线程的一些问题

1)多年来,本地线程中携带的数据项增加了 2)由于我们开始使用线程(对于一些轻量级处理),我们还将这些数据迁移到池中的线程并再次将它们复制回来

我正在考虑在内存中使用内存数据库(我们不想将其添加到API中)。我想知道这种方法是否合适。什么是利弊。

好的,这是一个简单的场景

  1. 用户登录并提交请求
  2. 系统为整个请求建立上下文,包括       - 此请求的唯一ID      - 用户名       - 系统进入(用户可以登录多个系统)       - 某些DOMAIN事件供以后使用
  3. 请求通过多个逻辑层(演示文稿,业务域, 规则,整合等等
  4. 在集成层中,我们从池中借用几个线程来并行拉取数据 多个伙伴。每个pull都需要先前存储在本地线程中的一些数据,因此我们将这些数据迁移到池化线程
  5. 从合作伙伴收到所有数据后,我们将子线程中累积的新线程本地数据迁移回主线程
  6. 在交互结束时,我们将DOMAIN事件保存到DB

1 个答案:

答案 0 :(得分:1)

您可能想要引入请求上下文:http://www.corej2eepatterns.com/Patterns2ndEd/ContextObject.htm

如果您正在使用WebContainer或Interceptor,如果您正在使用ApplicationServer,则可以在Filter中处理此类对象的创建/销毁。