Changes for Jakarta EE 10 relative to Jakarta EE 9.

---

The central change is the addition of four new JNDI reference element types.  These were introduced through the shared jakarta EE 10 schema:

jakartaee_10.xsd:

  <xsd:group name="jndiEnvironmentRefsGroup">
      <xsd:element name="context-service" type="jakartaee:context-serviceType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="managed-executor" type="jakartaee:managed-executorType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="managed-scheduled-executor" type="jakartaee:managed-scheduled-executorType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="managed-thread-factory" type="jakartaee:managed-thread-factoryType" minOccurs="0" maxOccurs="unbounded"/>

The changes impact Application and Web.  Application imbeds the new reference types directly.  Web imbeds the new reference types indirectly through the JNDI environment references group.

Application-Client was updated to use the new jakarta EE 10 schema.  However, no path within the client schema reaches the new reference elements.

Similarly, Connector was updated to use the new jakarta EE 10 schema (while *not* changing the schema version).  See the notes, below.

EJB was not updated to use the new jakarta EE 10 schema, and therefore uses none of the new reference element types.  See the notes, below.

---

application_9.xsd
application_10.xsd
  <xsd:include schemaLocation="jakartaee_10.xsd"/>

  <xsd:element name="application" type="jakartaee:applicationType">

  <xsd:complexType name="applicationType">
    <xsd:sequence>
      ...
      <xsd:element name="context-service" type="jakartaee:context-serviceType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="managed-executor" type="jakartaee:managed-executorType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="managed-scheduled-executor" type="jakartaee:managed-scheduled-executorType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="managed-thread-factory" type="jakartaee:managed-thread-factoryType" minOccurs="0" maxOccurs="unbounded"/>

---

application-client_9.xsd
application-client_10.xsd
  <xsd:include schemaLocation="jakartaee_10.xsd"/>

---

web-common_6_0.xsd:
  --> web-app_6_0.xsd
  --> web-fragment_6_0.xsd

web-common_6_0.xsd:
  <xsd:group name="web-commonType">
      <xsd:group ref="jakartaee:jndiEnvironmentRefsGroup"/>

---

web-common_6_0.xsd

Updated the type "cookie-configType", which is used by element "cookie-config":

      <xsd:element name="cookie-config"
                   type="jakartaee:cookie-configType"
                   minOccurs="0">

Attribute "attribute" of type "attribute-valueType" was added:

  <xsd:complexType name="cookie-configType">
...
    <xsd:sequence>
...
      <xsd:element name="attribute"
                   type="jakartaee:attribute-valueType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>
            The attribute-param element contains a name/value pair to
            be added as an attribute to every session cookie.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>

Attribute 'attribute' is a collection attribute with elements of type 'attribute-valueType'.
The element type has two elements, a description, an attribute value, and an ID:

  <xsd:complexType name="attribute-valueType">
    <xsd:annotation>
      <xsd:documentation>
        This type is a general type that can be used to declare
        attribute/value lists.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="jakartaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="attribute-name"
                   type="jakartaee:string">
        <xsd:annotation>
          <xsd:documentation>
            The attribute-name element contains the name of an
            attribute.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="attribute-value"
                   type="jakartaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>
            The attribute-value element contains the value of a
            attribute.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>

---

Notes:

--

EJB would obtain the update through the following.  However, the EJB schema was not updated to import the new jakarta EE 10 schema, and does not handle the new reference types.

ejb-jar_4_0.xsd
  <xsd:complexType name="entity-beanType">
  <xsd:complexType name="interceptorType">
  <xsd:complexType name="message-driven-beanType">
  <xsd:complexType name="session-beanType">
      <xsd:group ref="jakartaee:jndiEnvironmentRefsGroup"/>

--

Connector has an update *WITHIN THE 2.0 SCHEMA* to change from "jakartaee_9.xsd" to "jakartaee_10.xsd".  That is improper.
Temporarily, a new connector "2.1" schema has been created which has the update?

connector_2_0.xsd
connector_2_1.xsd
  <xsd:include schemaLocation="jakartaee_10.xsd"/>

There is no path to any of the new reference elements.  This connector schema update does not seem to be necessary.

---

Details for the new JNDI reference elements:

--

  <xsd:complexType name="context-serviceType">
    <xsd:sequence>
      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0"/>
      <xsd:element name="name" type="jakartaee:jndi-nameType"/>
      <xsd:element name="cleared" type="jakartaee:string" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>
            Types of context to clear whenever a thread runs ag
            contextual task or action. The thread's previous context
            is restored afterward. Context types that are defined by
            the Jakarta EE Concurrency specification include:
            Application, Security, Transaction,
            and Remaining, which means all available thread context
            types that are not specified elsewhere. You can also specify
            vendor-specific context types. Absent other configuration,
            cleared context defaults to Transaction. You can specify
            a single cleared element with no value to indicate an
            empty list of context types to clear. If neither
            propagated nor unchanged specify (or default to) Remaining,
            then Remaining is automatically appended to the list of
            cleared context types.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="propagated" type="jakartaee:string" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>
            Types of context to capture from the requesting thread
            and propagate to a thread that runs a contextual task
            or action. The captured context is re-established
            when threads run the contextual task or action,
            with the respective thread's previous context being
            restored afterward. Context types that are defined by
            the Jakarta EE Concurrency specification include:
            Application, Security,
            and Remaining, which means all available thread context
            types that are not specified elsewhere. You can also specify
            vendor-specific context types. Absent other configuration,
            propagated context defaults to Remaining. You can specify
            a single propagated element with no value to indicate that
            no context types should be propagated.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="unchanged" type="jakartaee:string" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            Types of context that are left alone when a thread runs a
            contextual task or action. Context types that are defined
            by the Jakarta EE Concurrency specification include:
            Application, Security, Transaction,
            and Remaining, which means all available thread context
            types that are not specified elsewhere. You can also specify
            vendor-specific context types. Absent other configuration,
            unchanged context defaults to empty. You can specify
            a single unchanged element with no value to indicate that
            no context types should be left unchanged.

          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded"/>

    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

--

  <xsd:complexType name="managed-executorType">
    <xsd:sequence>
      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0"/>
      <xsd:element name="name" type="jakartaee:jndi-nameType"/>
      <xsd:element name="context-service-ref" type="jakartaee:jndi-nameType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Refers to the name of a ContextServiceDefinition or
            context-service deployment descriptor element,
            which determines how context is applied to tasks and actions
            that run on this executor.
            The name must be in a valid Jakarta EE namespace,
            such as java:comp, java:module, java:app, or java:global.
            In the absence of a configured value,
            java:comp/DefaultContextService is used.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="max-async" type="jakartaee:xsdPositiveIntegerType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Upper 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.
            The default is unbounded, although still subject to
            resource constraints of the system.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="hung-task-threshold" type="jakartaee:xsdPositiveIntegerType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            The amount of time in milliseconds that a task or action
            can execute before it is considered hung.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>

    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

--

  <xsd:complexType name="managed-scheduled-executorType">
    <xsd:sequence>
      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0"/>
      <xsd:element name="name" type="jakartaee:jndi-nameType"/>
      <xsd:element name="context-service-ref" type="jakartaee:jndi-nameType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Refers to the name of a ContextServiceDefinition or
            context-service deployment descriptor element,
            which determines how context is applied to tasks and actions
            that run on this executor.
            The name must be in a valid Jakarta EE namespace,
            such as java:comp, java:module, java:app, or java:global.
            In the absence of a configured value,
            java:comp/DefaultContextService is used.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="max-async" type="jakartaee:xsdPositiveIntegerType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Upper 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 the schedule methods.
            The default is unbounded, although still subject to
            resource constraints of the system.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="hung-task-threshold" type="jakartaee:xsdPositiveIntegerType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            The amount of time in milliseconds that a task or action
            can execute before it is considered hung.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

--

  <xsd:complexType name="managed-thread-factoryType">
    <xsd:sequence>
      <xsd:element name="description" type="jakartaee:descriptionType" minOccurs="0">
      <xsd:element name="name" type="jakartaee:jndi-nameType"/>
      <xsd:element name="context-service-ref" type="jakartaee:jndi-nameType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Refers to the name of a ContextServiceDefinition or
            context-service deployment descriptor element,
            which determines how context is applied to threads
            from this thread factory.
            The name must be in a valid Jakarta EE namespace,
            such as java:comp, java:module, java:app, or java:global.
            In the absence of a configured value,
            java:comp/DefaultContextService is used.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="priority" type="jakartaee:priorityType" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>
            Priority for threads created by this thread factory.
            The default is 5 (java.lang.Thread.NORM_PRIORITY).
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="property" type="jakartaee:propertyType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

---

Updates to: web-facesconfig_4_0.xsd:

Removed constraint:

  <xsd:element name="faces-config"
               type="jakartaee:faces-configType">

    <xsd:unique name="faces-config-managed-bean-name-uniqueness">
      <xsd:annotation>
        <xsd:documentation>
          <![CDATA[
          <p> Managed bean names must be unique within a document.</p>

          ]]>
        </xsd:documentation>
      </xsd:annotation>
      <xsd:selector xpath="jakartaee:managed-bean"/>
      <xsd:field xpath="jakartaee:managed-bean-name"/>
    </xsd:unique>

Removed element:

  <xsd:complexType name="faces-configType">
      <xsd:element name="managed-bean"
                   type="jakartaee:faces-config-managed-beanType"/>

Removed elements:

  <xsd:complexType name="faces-config-applicationType">

      <xsd:element name="property-resolver"
                   type="jakartaee:fully-qualified-classType">
      <xsd:element name="variable-resolver"
                   type="jakartaee:fully-qualified-classType">

Removed types:

  <xsd:complexType name="faces-config-managed-beanType">
  <xsd:complexType name="faces-config-managed-bean-extensionType">
  <xsd:complexType name="faces-config-managed-bean-scopeOrNoneType">
  <xsd:complexType name="faces-config-managed-propertyType">
  <xsd:complexType name="faces-config-map-entryType">
  <xsd:complexType name="faces-config-map-entriesType">
  <xsd:complexType name="faces-config-value-classType">
  <xsd:complexType name="faces-config-list-entriesType">

---
