Annotation Interface ManagedScheduledExecutorDefinition
Defines a ManagedScheduledExecutorService
to be registered in JNDI by the container
under the JNDI name that is specified in the
name()
attribute.
Application components can refer to this JNDI name in the
lookup
attribute of a
Resource
annotation,
@ManagedScheduledExecutorDefinition( name = "java:comp/concurrent/MyScheduledExecutor", context = "java:comp/concurrent/MyScheduledExecutorContext", hungTaskThreshold = 30000, maxAsync = 3) @ContextServiceDefinition( name = "java:comp/concurrent/MyScheduledExecutorContext", propagated = APPLICATION) public class MyServlet extends HttpServlet { @Resource(lookup = "java:comp/concurrent/MyScheduledExecutor", name = "java:comp/concurrent/env/MyScheduledExecutorRef") ManagedScheduledExecutorService myScheduledExecutor;
Resource environment references in a deployment descriptor
can similarly specify the lookup-name
,
<resource-env-ref> <resource-env-ref-name>java:comp/env/concurrent/MyScheduledExecutorRef</resource-env-ref-name> <resource-env-ref-type>jakarta.enterprise.concurrent.ManagedScheduledExecutorService</resource-env-ref-type> <lookup-name>java:comp/concurrent/MyScheduledExecutor</lookup-name> </resource-env-ref>You can also define a
ManagedScheduledExecutorService
with the
<managed-scheduled-executor>
deployment descriptor element.
For example,
<managed-scheduled-executor> <name>java:module/concurrent/MyExecutor</name> <context-service-ref>java:module/concurrent/MyExecutorContext</context-service-ref> <hung-task-threshold>120000</hung-task-threshold> <max-async>5</max-async> </managed-scheduled-executor>If a
managed-scheduled-executor
and ManagedScheduledExecutorDefinition
have the same name, their attributes are merged to define a single
ManagedScheduledExecutorService
definition, with each attribute that is specified
in the managed-scheduled-executor
deployment descriptor entry taking
precedence over the corresponding attribute of the annotation.- Since:
- 3.0
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic @interface
Enables multipleManagedScheduledExecutorDefinition
annotations on the same type. -
Required Element Summary
Modifier and TypeRequired ElementDescriptionJNDI name of theManagedScheduledExecutorService
instance. -
Optional Element Summary
Modifier and TypeOptional ElementDescriptionThe name of aContextService
instance which determines how context is applied to tasks and actions that run on this executor.long
The amount of time in milliseconds that a task or action can execute before it is considered hung.int
Upper bound on contextual tasks and actions that this executor will simultaneously execute asynchronously.
-
Element Details
-
name
String nameJNDI name of theManagedScheduledExecutorService
instance. The JNDI name must be in a valid Jakarta EE namespace, such as,- java:comp
- java:module
- java:app
- java:global
- Returns:
ManagedScheduledExecutorService
JNDI name.
-
-
-
context
String contextThe name of aContextService
instance which determines how context is applied to tasks and actions that run on this executor.The name can be the name of a
ContextServiceDefinition
or the name of acontext-service
deployment descriptor element or the JNDI name of the Jakarta EE defaultContextService
instance,java:comp/DefaultContextService
.The name of the
ContextService
must be no more granular than the name of thisManagedScheduledExecutorDefinition
. For example, if thisManagedScheduledExecutorDefinition
has a name injava:app
, theContextService
can be injava:app
orjava:global
, but not injava:module
which would be ambiguous as to which module'sContextService
definition should be used.The default value,
java:comp/DefaultContextService
, is the JNDI name of the Jakarta EE defaultContextService
.- Returns:
- name of the
ContextService
for capturing and propagating or clearing context.
- Default:
- "java:comp/DefaultContextService"
-
hungTaskThreshold
long hungTaskThresholdThe amount of time in milliseconds that a task or action can execute before it is considered hung.
The default value of
-1
indicates unlimited.- Returns:
- number of milliseconds after which a task or action is considered hung.
- Default:
- -1L
-
maxAsync
int maxAsyncUpper bound on contextual tasks and actions that this executor will simultaneously execute asynchronously. This constraint does not apply to tasks and actions that the executor runs inline, such as when a thread requests
CompletableFuture.join()
and the action runs inline if it has not yet started. This constraint also does not apply to tasks that are scheduled via theschedule*
methods.The default value of
-1
indicates unbounded, although still subject to resource constraints of the system.- Returns:
- upper limit on asynchronous execution.
- Default:
- -1
-