HK2 独立于线程 Id 的操作

HK2 Operation independent from Thread Id

我正在使用 HK2 Operations 来管理包含 REST 服务器组件的 Java SE 应用程序中的自定义范围。 REST部分由Jersey提供。

Jersey 允许资源 return 一个(可能很慢或很长-运行)StreamingOutput 而不是一个离散的实体。据我了解,这提供了一种处理较低层的异步行为形式。我观察到的是,虽然流输出是 运行,但处理初始 Jersey 请求的线程再次空闲以处理新的 Jersey 请求,这需要它们自己的范围。

HK2 说:

HK2 Operations provide a convenient set of tools for building scopes/context pairs that follow the general rule of “one operation on a thread at a time.”

不幸的是,这就是它发生冲突的地方。当传入请求路由到 already/still 为其他地方服务 StreamingOutput 的同一个线程时,无法启动操作:

java.lang.IllegalStateException: The operation OperationHandleImpl(OperationIdentifier(326193,my.TransactionScope),254339200) is active on 62

有什么提示吗?

运算为gr8,但必须遵循“one-operation-on-a-thread-at-a-time”

的规则

真的只有两件事要做。

  1. 向 Eclipse 寻求扩展操作工作方式的功能
  2. 可能可以使用操作 api 本身来检测操作是否是 运行... 如果是... 而不是分叉另一个线程并在那里继续您的操作(完全破解,但......可能会奏效)。