第 9 章 Jakarta Concurrency
Jakarta Concurrency 是一种 API,可满足 Jakarta EE 应用环境规格中的 Java SE 并发实用程序。它在 Jakarta Concurrency 规范中定义。JBoss EAP 允许您创建、编辑和删除 Jakarta Concurrency 实例,从而使这些实例随时可供应用使用。
Jakarta Concurrency 通过拉取现有上下文的应用线程并在自己的线程中使用这些线程,帮助扩展调用上下文。默认情况下,这种调用上下文的扩展包括类加载、JNDI 和安全上下文。
Jakarta Concurrency 的类型包括:
- 上下文服务
- 管理的线程事实
- 受管执行器服务
- 管理的调度执行器服务
示例: standalone.xml
中的 Jakarta Concurrency
<subsystem xmlns="urn:jboss:domain:ee:4.0"> <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> <concurrent> <context-services> <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/> </context-services> <managed-thread-factories> <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/> </managed-thread-factories> <managed-executor-services> <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" keepalive-time="5000"/> </managed-executor-services> <managed-scheduled-executor-services> <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" keepalive-time="3000"/> </managed-scheduled-executor-services> </concurrent> <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/> </subsystem>
9.1. 上下文服务
上下文服务(javax.enterprise.concurrent.ContextService
)允许您从现有对象构建上下文代理。在将调用传输到原始对象之前,上下文代理会准备调用上下文,供其他 Jakarta Concurrency 实用程序在创建或调用上下文时使用。
上下文服务并发程序的属性包括:
-
Name
:所有上下文服务中的唯一名称。 -
jnDI-name
:定义应将上下文服务放置在 JNDI 中。 -
use-transaction-setup-provider
: Optional.指明在调用代理对象时,上下文服务构建的上下文代理是否应该在上下文中暂停事务。其值默认为false
,但默认上下文服务的值为true
。
有关使用上下文服务并发实用程序的示例,请参见上面的示例。
示例:添加新上下文服务
/subsystem=ee/context-service=newContextService:add(jndi-name=java:jboss/ee/concurrency/contextservice/newContextService)
示例:更改上下文服务
/subsystem=ee/context-service=newContextService:write-attribute(name=jndi-name, value=java:jboss/ee/concurrency/contextservice/changedContextService)
此操作需要重新加载。
示例:删除上下文服务
/subsystem=ee/context-service=newContextService:remove()
此操作需要重新加载。