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”
的规则
真的只有两件事要做。
- 向 Eclipse 寻求扩展操作工作方式的功能
- 可能可以使用操作 api 本身来检测操作是否是 运行... 如果是... 而不是分叉另一个线程并在那里继续您的操作(完全破解,但......可能会奏效)。
我正在使用 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”
的规则真的只有两件事要做。
- 向 Eclipse 寻求扩展操作工作方式的功能
- 可能可以使用操作 api 本身来检测操作是否是 运行... 如果是... 而不是分叉另一个线程并在那里继续您的操作(完全破解,但......可能会奏效)。