0

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

1)这些年来,本地线程中承载的数据项有所增加 2)自从我们开始使用线程(用于一些轻量级处理)以来,我们也将这些数据迁移到池中的线程并再次将它们复制回来

我正在考虑为这些使用内存数据库(我们不想将其添加到 API 中)。我想知道这种方法是否很好。有什么好处和坏处。

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

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

1 回答 1

1

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

如果您使用的是 WebContainer,则可以在过滤器中处理此类对象的创建/销毁;如果您使用的是 ApplicationServer,则可以使用拦截器。

于 2011-11-14T11:33:49.947 回答