[[EE_Default_Bindings_Configuration]]
= Default EE Bindings

ifdef::env-github[]
:tip-caption: :bulb:
:note-caption: :information_source:
:important-caption: :heavy_exclamation_mark:
:caution-caption: :fire:
:warning-caption: :warning:
endif::[]

The Jakarta EE Specification mandates the existence of a default instance
for each of the following resources:

* Context Service
* Datasource
* Jakarta Messaging Connection Factory
* Managed Executor Service
* Managed Scheduled Executor Service
* Managed Thread Factory

The EE subsystem looks up the default instances from JNDI, using the
names in the default bindings configuration, before placing those in the
standard JNDI names, such as `java:comp/DefaultManagedExecutorService`:

[source,xml,options="nowrap"]
----
  <default-bindings
 context-service="java:jboss/ee/concurrency/context/default"
 datasource="java:jboss/datasources/ExampleDS"
 jms-connection-factory="java:jboss/DefaultJMSConnectionFactory"
 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" />
----

Above bindings become application dependencies upon deployment. However in some cases 
they might not be required or covered by non-default resources. In such case default binding could be:
[.result]
====
* rewriten - to point to user configured resource( :write-attribute(name=...,value=...) )
* undefined - if there is no need for runtime dependency( :undefine-attribute(name=...) )
====

[NOTE]

The default bindings are optional, if the jndi name for a default
binding is not configured then the related resource will not be
available to Jakarta EE applications.

[NOTE]

If default EE resources are not required and bindings do not point at them,
it is safe to remove or turn off default services.
