java - HK2 操作独立于线程 ID
问题描述
我正在使用 HK2 Operations来管理包含 REST 服务器组件的 Java SE 应用程序中的自定义范围。REST 部分由 Jersey 提供。
Jersey 允许资源返回(可能是缓慢或长时间运行的)StreamingOutput,而不是离散实体。据我了解,这提供了一种处理较低层的异步行为形式。我观察到的是,当流输出正在运行时,处理初始 Jersey 请求的线程可以再次自由地接受新的 Jersey 请求,这些请求需要它们自己的范围。
HK2 说:
HK2 Operations 提供了一组方便的工具来构建范围/上下文对,遵循“一次一个线程上的一个操作”的一般规则。</p>
不幸的是,这就是它发生冲突的地方。当传入请求被路由到已经/仍在为StreamingOutput
其他地方提供服务的同一线程时,操作无法启动:
java.lang.IllegalStateException: The operation OperationHandleImpl(OperationIdentifier(326193,my.TransactionScope),254339200) is active on 62
关于做什么的任何提示?
解决方案
操作是 gr8,但必须遵循“一次操作一个线程”的规则
真的只有两件事要做。
- 向 Eclipse 寻求扩展操作工作方式的功能
- 可以使用操作 api 本身来检测操作是否正在运行......如果它正在运行......而不是分叉一个不同的线程并在那里继续你的操作(完全破解但......可能会工作)。
推荐阅读
- android - 带有标签/标签的照片的云存储架构/解决方案
- java - office365 中通过 SMTP 丢失的邮件标头
- javascript - 根据下拉列表中的选定选项更新 JS 中的变量
- bash - Shell脚本循环遍历文件夹中的所有文件并按数字顺序选择它们
- scala - NoClassDefFoundError:无法初始化类 org.apache.spark.package
- react-native - 在 onEndEditing 中设置 TextInput 状态
- python - 进程池中的同一个进程会被执行多次
- flutter - 如何从 Flutter Firebase 实时数据库中读取数据?
- reporting-services - 如何防止来自 ssrs 报告中自定义代码的 NaN 结果
- angular - 即使在清除搜索输入后,预输入功能也会提供建议