Annotation Type ManagedThreadFactoryDefinition
-
@Repeatable(List.class) @Retention(RUNTIME) @Target(TYPE) public @interface ManagedThreadFactoryDefinition
Defines
ManagedThreadFactory
instances to be injected intoManagedThreadFactory
injection points including any requiredQualifier
annotations specified byqualifiers()
and registered in JNDI by the container under the JNDI name that is specified in thename()
attribute.Application components can refer to this JNDI name in the
lookup
attribute of aResource
annotation,@ManagedThreadFactoryDefinition( name = "java:global/concurrent/MyThreadFactory", qualifiers = MyQualifier.class, context = "java:global/concurrent/MyThreadFactoryContext", priority = 4) @ContextServiceDefinition( name = "java:global/concurrent/MyThreadFactoryContext", propagated = APPLICATION) public class MyServlet extends HttpServlet { @Inject @MyQualifier ManagedThreadFactory myThreadFactory1; @Resource(lookup = "java:global/concurrent/MyThreadFactory", name = "java:module/concurrent/env/MyThreadFactoryRef") ManagedThreadFactory myThreadFactory2; ... @Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE }) public @interface MyQualifier {}
Resource environment references in a deployment descriptor can similarly specify the
lookup-name
,<resource-env-ref> <resource-env-ref-name>java:module/env/concurrent/MyThreadFactoryRef</resource-env-ref-name> <resource-env-ref-type>jakarta.enterprise.concurrent.ManagedThreadFactory</resource-env-ref-type> <lookup-name>java:global/concurrent/MyThreadFactory</lookup-name> </resource-env-ref>
You can also define aManagedThreadFactory
with the<managed-thread-factory>
deployment descriptor element. For example,<managed-thread-factory> <name>java:global/concurrent/MyThreadFactory</name> <context-service-ref>java:global/concurrent/MyThreadFactoryContext</context-service-ref> <priority>4</priority> </managed-thread-factory>
If amanaged-thread-factory
andManagedThreadFactoryDefinition
have the same name, their attributes are merged to define a singleManagedThreadFactory
definition, with each attribute that is specified in themanaged-thread-factory
deployment descriptor entry taking precedence over the corresponding attribute of the annotation. If any qualifier elements are specified, the set of qualifier elements replaces the qualifiers attribute of the annotation.- Since:
- 3.0
-
-
Required Element Summary
Required Elements Modifier and Type Required Element Description java.lang.String
name
JNDI name of theManagedThreadFactory
instance.
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description java.lang.String
context
Determines how context is applied to threads from this thread factory.int
priority
Priority for platform threads created by this thread factory.java.lang.Class<?>[]
qualifiers
List of requiredqualifier annotations
.boolean
virtual
Indicates whether this thread factory is requested to create virtualthreads
.
-
-
-
Element Detail
-
name
java.lang.String name
JNDI name of theManagedThreadFactory
instance. The JNDI name must be in a valid Jakarta EE namespace, such as,- java:comp
- java:module
- java:app
- java:global
- Returns:
ManagedThreadFactory
JNDI name.
-
-
-
qualifiers
java.lang.Class<?>[] qualifiers
List of required
qualifier annotations
.A
ManagedThreadFactory
injection point with these qualifier annotations injects a bean that is produced by thisManagedThreadFactoryDefinition
.The default value is an empty list, indicating that this
ManagedThreadFactoryDefinition
does not automatically produce bean instances for any injection points.When the qualifiers list is non-empty, the container creates a
ManagedThreadFactory
instance and registers anApplicationScoped
bean for it with the specified required qualifiers and required type ofManagedThreadFactory
. The life cycle of the bean aligns with the life cycle of the application and the bean is not accessible from outside of the application. Applications must not configure ajava:global
name
if also configuring a non-empty list of qualifiers.Applications can define their own
Producers
forManagedThreadFactory
injection points as long as the qualifier annotations on the producer do not conflict with the non-emptyqualifiers()
list of aManagedThreadFactoryDefinition
.- Returns:
- list of qualifiers.
- Since:
- 3.1
- Default:
- {}
-
-
-
context
java.lang.String context
Determines how context is applied to threads from this thread factory.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 thisManagedThreadFactoryDefinition
. For example, if thisManagedThreadFactoryDefinition
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:
- instructions for capturing and propagating or clearing context.
- Default:
- "java:comp/DefaultContextService"
-
-
-
virtual
boolean virtual
Indicates whether this thread factory is requested to create virtual
threads
. Virtual threads are discussed in theThread
JavaDoc under the section that is titled Virtual threads.When
true
, the thread factory can create virtual threads if it is capable of doing so and if the request is not overridden by vendor-specific configuration that restricts the use of virtual threads.The default is
false
, indicating that the thread factory must not create virtual threads. Whenfalse
, the thread factory always creates platform threads.When running on Java SE 17, the
true
value behaves the same as thefalse
value and results in platform threads being created rather than virtual threads.- Returns:
true
if the thread factory is requested to create virtual threads, otherwisefalse
.- Since:
- 3.1
- Default:
- false
-
-