<?xml version="1.0" encoding="UTF-8"?>
<!--

    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

    Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.

    The contents of this file are subject to the terms of either the GNU
    General Public License Version 2 only ("GPL") or the Common Development
    and Distribution License("CDDL") (collectively, the "License").  You
    may not use this file except in compliance with the License.  You can
    obtain a copy of the License at
    https://github.com/payara/Payara/blob/main/LICENSE.txt
    See the License for the specific
    language governing permissions and limitations under the License.

    When distributing the software, include this License Header Notice in each
    file and include the License file at legal/OPEN-SOURCE-LICENSE.txt.

    GPL Classpath Exception:
    Oracle designates this particular file as subject to the "Classpath"
    exception as provided by Oracle in the GPL Version 2 section of the License
    file that accompanied this code.

    Modifications:
    If applicable, add the following below the License Header, with the fields
    enclosed by brackets [] replaced by your own identifying information:
    "Portions Copyright [year] [name of copyright owner]"

    Contributor(s):
    If you wish your version of this file to be governed by only the CDDL or
    only the GPL Version 2, indicate your decision by adding "[Contributor]
    elects to include this software in this distribution under the [CDDL or GPL
    Version 2] license."  If you don't indicate a single choice of license, a
    recipient has the option to distribute your version of this file under
    either the CDDL, the GPL Version 2 or to extend the choice of license to
    its licensees as provided above.  However, if you add GPL Version 2 code
    and therefore, elected the GPL Version 2 license, then the option applies
    only if the new code is made subject to such option by the copyright
    holder.

-->
<!-- Portions Copyright 2024-2026 Payara Foundation and/or affiliates -->

<!--
  A resources instance document referring to this DTD should have a DOCTYPE as follows:
 <!DOCTYPE resources PUBLIC "-//Payara.fish//DTD Payara Server 7 Resource Definitions//EN" "https://raw.githubusercontent.com/payara/Payara/refs/heads/main/appserver/connectors/descriptors/src/main/resources/glassfish/lib/dtds/payara7-resources_1_8-1.dtd">-->
<!-- ENTITIES -->
<!-- boolean

  Used in:
    admin-object-resource, connector-connection-pool,
    connector-resource, custom-resource, external-jndi-resource,
    jdbc-connection-pool, jdbc-resource, mail-resource,
    work-security-map, managed-executor-service
-->
<!ENTITY % boolean "(yes | no | on | off | 1 | 0 | true | false)">

<!-- isolation

  Used in:
    jdbc-connection-pool
-->
<!ENTITY % isolation
    "(read-uncommitted | read-committed | repeatable-read | serializable | snapshot)">


<!-- object-type
    defines the type of the resource. It can be:
    system-all
        These are system resources for all instances and DAS
    system-admin
        These are system resources only in DAS
    system-instance
        These are system resources only in instances (and not DAS)
    user
        User resources (This is the default for all elements)

  Used in:
    admin-object-resource, connector-resource, custom-resource,
    external-jndi-resource, jdbc-resource, mail-resource,
    resource-adapter-config, work-security-map
-->
<!ENTITY % object-type "(system-all | system-admin | system-instance | user)">

<!-- ELEMENTS -->

<!-- resources
    J2EE Applications look up resources registered with the
    Application server, using portable JNDI names.
-->
<!ELEMENT resources
    ((custom-resource | external-jndi-resource | jdbc-resource | mail-resource
        | admin-object-resource | connector-resource
        | resource-adapter-config | jdbc-connection-pool
        | connector-connection-pool | work-security-map
        | managed-executor-service | managed-scheduled-executor-service
        | managed-thread-factory)*)>



<!-- description
    Textual description of a configured entity

  Used in:
    admin-object-resource, connector-connection-pool,
    connector-resource, custom-resource, external-jndi-resource,
    jdbc-connection-pool, jdbc-resource, mail-resource,
    work-security-map, property, managed-executor-service,
    managed-scheduled-executor-service, managed-thread-factory
-->
<!ELEMENT description (#PCDATA)>


<!-- custom-resource
    custom (or generic) resource managed by a user-written factory
    class.

  attributes
    jndi-name
        JNDI name for generic resource, the fully qualified type of
        the resource and whether it is enabled at runtime

  Used in:
    resources
-->
<!ELEMENT custom-resource (description?, property*)>

<!ATTLIST custom-resource
    jndi-name CDATA #REQUIRED
    res-type CDATA #REQUIRED
    factory-class CDATA #REQUIRED
    object-type %object-type; "user"
    enabled %boolean; "true">


<!-- external-jndi-resource
    resource residing in an external JNDI repository

  Used in:
    resources
-->
<!ELEMENT external-jndi-resource (description?, property*)>

<!ATTLIST external-jndi-resource
    jndi-name CDATA #REQUIRED
    jndi-lookup-name CDATA #REQUIRED
    res-type CDATA #REQUIRED
    factory-class CDATA #REQUIRED
    object-type %object-type; "user"
    enabled %boolean; "true">


<!-- jdbc-resource
    JDBC javax.sql.(XA)DataSource resource definition

  Used in:
    resources
-->
<!ELEMENT jdbc-resource (description?, property*)>

<!ATTLIST jdbc-resource
    jndi-name CDATA #REQUIRED
    pool-name CDATA #REQUIRED
    object-type %object-type; "user"
    enabled %boolean; "true">


<!-- mail-resource
    The mail-resource element describes a javax.mail.Session resource

  attributes
    host
        ip V6 or V4 address or hostname.

  Used in:
    resources
-->
<!ELEMENT mail-resource (description?, property*)>

<!ATTLIST mail-resource
    jndi-name CDATA #REQUIRED
    store-protocol CDATA "imap"
    store-protocol-class CDATA "org.eclipse.angus.mail.imap.IMAPStore"
    transport-protocol CDATA "smtp"
    transport-protocol-class CDATA "org.eclipse.angus.mail.smtp.SMTPTransport"
    host CDATA #REQUIRED
    user CDATA #REQUIRED
    from CDATA #REQUIRED
    debug %boolean; "false"
    object-type %object-type; "user"
    enabled %boolean; "true">

<!-- admin-object-resource
    The admin-object-resource element describes a administered object
    for a inbound resource adapter.

  attributes
    jndi-name
        JNDI name for this resource
    res-adapter
        Name of the inbound resource adapter.
    res-type
        Interface definition for the administered object
    class-name
        admin-object class-name (when more than one implementation class
        is specified for same res-type in the resource-adapter,
        class-name must be specified)

  Used in:
    resources
-->
<!ELEMENT admin-object-resource (description?, property*)>

<!ATTLIST admin-object-resource
    jndi-name CDATA #REQUIRED
    res-type CDATA #REQUIRED
    class-name CDATA #IMPLIED
    res-adapter CDATA #REQUIRED
    object-type %object-type; "user"
    enabled %boolean; "true">


<!-- connector-resource

  Used in:
    resources
-->
<!ELEMENT connector-resource (description?, property*)>

<!ATTLIST connector-resource
    jndi-name CDATA #REQUIRED
    pool-name CDATA #REQUIRED
    object-type %object-type; "user"
    enabled %boolean; "true">


<!-- resource-adapter-config
    This element is for configuring the resource adapter. These
    values (properties) over-rides the default values present in
    ra.xml. The name attribute has to be unique . It is optional for
    PE. It is used mainly for EE.

  Used in:
    resources
-->
<!ELEMENT resource-adapter-config (property*)>

<!ATTLIST resource-adapter-config
    name CDATA #IMPLIED
    thread-pool-ids CDATA #IMPLIED
    object-type %object-type; "user"
    resource-adapter-name CDATA #REQUIRED>


<!-- jdbc-connection-pool
    jdbc-connection-pool defines configuration used to create and
    manage a pool physical database connections. Pool definition is
    named, and can be referred to by multiple jdbc-resource elements
    (See <jdbc-resource>).

    Each named pool definition results in a pool instantiated at server
    start-up. Pool is populated when accessed for the first time. If two or
    more jdbc-resource elements point to the same jdbc-connection-pool
    element, they are using the same pool of connections, at run time.


  children
    property
        Most JDBC 2.0 drivers permit use of standard property lists,
        to specify User, Password and other resource configuration.
        While these are optional properties, according to the
        specification, several of these properties may be necessary
        for most databases. See Section 5.3 of JDBC 2.0 Standard
        Extension API.

        The following are the names and corresponding values for these
        properties

        databaseName
            Name of the Database
        serverName
            Database Server name.
        port
            Port where a Database server is listening for requests.
        networkProtocol
            Communication Protocol used.
        user
            default name of the database user with which connections
            will be stablished. Programmatic database authentication
            or default-resource-principal specified in vendor
            specific web and ejb deployment descriptors will take
            precedence, over this default. The details and caveats
            are described in detail in the Administrator's guide.
        password
            password for default database user
        roleName
            The initial SQL role name.
        datasourceName
            used to name an underlying XADataSource, or
            ConnectionPoolDataSource when pooling of connections is
            done
        description
            Textual Description

        When one or more of these properties are specified, they are passed as
        is using set<Name>(<Value>) methods to the vendors Datasource class
        (specified in datasource-classname). User and Password properties are
        used as default principal, if Container Managed authentication is
        specified and a default-resource-principal is not found in application
        deployment descriptors.


  attributes
    allow-non-component-callers
        A pool with this property set to true, can be used by
        non-J2EE components (i.e components other than EJBs or
        Servlets). The returned connection is enlisted automatically
        with the transaction context obtained from the transaction
        manager. This property is to enable the pool to be used by
        non-component callers such as ServletFilters, Lifecycle
        modules, and 3rd party persistence managers. Standard J2EE
        components can continue to use such pools. Connections
        obtained by non-component callers are not automatically
        cleaned at the end of a transaction by the container. They
        need to be explicitly closed by the the caller.
    associate-with-thread
        Associate a connection with the thread such that when the
        same thread is in need of a connection, it can reuse the
        connection already associated with that thread, thereby not
        incurring the overhead of getting a connection from the pool.
        Default value is false.
    connection-creation-retry-attempts
        The number of attempts to create a new connection. Default is
        0, which implies no retries.
    connection-creation-retry-interval-in-seconds
        The time interval between retries while attempting to create
        a connection. Default is 10 seconds. Effective when
        connection-creation-retry-attempts is greater than 0.
    connection-leak-reclaim
        If enabled, connection will be reusable (put back into pool)
        after connection-leak-timeout-in-seconds occurs. Default
        value is false.
    connection-leak-timeout-in-seconds
        To aid user in detecting potential connection leaks by the
        application. When a connection is not returned back to the
        pool by the application within the specified period, it is
        assumed to be a potential leak and stack trace of the caller
        will be logged. Default is 0, which implies there is no leak
        detection, by default. A positive non-zero value turns on
        leak detection. Note however that, this attribute only
        detects if there is a connection leak. The connection can be
        reclaimed only if connection-leak-reclaim is set to true.
    connection-validation-method
        specifies the type of validation to be performed when
        is-connection-validation-required is true. Default value of
    this attribute is table. (see validation-table-name). The following
        types of validation are supported:
        auto-commit
            using connection.autoCommit()
        meta-data
            using connection.getMetaData()
        table
            performing a query on a user specified table (see
            validation-table-name).
        custom-validation
            validation based on user specified validation mechanism (see
            validation-classname).
    datasource-classname
        Name of the vendor supplied JDBC datasource resource manager.
        An XA or global transactions capable datasource class will
        implement javax.sql.XADatasource interface. Non XA or Local
        transactions only datasources will implement
        javax.sql.Datasource interface.
    driver-classname
        Name of the vendor supplied JDBC driver class name. The
        specified driver should implement the java.sql.Driver interface.
    fail-all-connections
        indicates if all connections in the pool must be closed
        should a single validation check fail. The default is false.
        One attempt will be made to re-establish failed connections.
    idle-timeout-in-seconds
        maximum time in seconds, that a connection can remain idle in
        the pool. After this time, the pool implementation can close
        this connection. Note that this does not control connection
        timeouts enforced at the database server side. Adminsitrators
        are advised to keep this timeout shorter than the database
        server side timeout (if such timeouts are configured on the
        specific vendor's database), to prevent accumulation of
        unusable connection in Application Server.
    init-sql
        Used to specify a SQL string by the user, to be executed
        whenever a connection is created from the pool (not the
        connections that are reused). This is executed to initialize
        the state of the connection.
        This is an optional attribute and should carry a value when
        a initialization SQL is to be executed.
    is-connection-validation-required
        if true, connections are validated (checked to find out if
        they are usable) before giving out to the application. The
        default is false.
    is-isolation-level-guaranteed
        Applicable only when a particular isolation level is
        specified for transaction-isolation-level. The default value
        is true. This assures that every time a connection is
        obtained from the pool, it is guaranteed to have the
        isolation set to the desired value. This could have some
        performance impact on some JDBC drivers. Can be set to false
        by that administrator when they are certain that the
        application does not change the isolation level before
        returning the connection.
    lazy-connection-association
        Connections are lazily associated when an operation is
        performed on them. Also, they are disassociated when the
        transaction is completed and a component method ends, which
        helps reuse of the physical connections. Default value is
        false.
    lazy-connection-enlistment
        Enlist a resource to the transaction only when it is actually
        used in a method, which avoids enlistment of connections that
        are not used in a transaction. This also prevents unnecessary
        enlistment of connections cached in the calling components.
        Default value is false.
    log-jdbc-calls
        Log all SQL calls made through a JDBC connection pool, with
        the time taken to execute the call also recorded and logged to
        the server at the FINE level. Default value is false.
    match-connections
        To switch on/off connection matching for the pool. It can be
        set to false if the administrator knows that the connections
        in the pool will always be homogeneous and hence a connection
        picked from the pool need not be matched by the resource
        adapter. Default value is false.
    max-connection-usage-count
        When specified, connections will be re-used by the pool for
        the specified number of times after which it will be closed.
        This is useful for instance, to avoid statement-leaks.
        Default value is 0, which implies the feature is not enabled.
    max-pool-size
        maximum number of conections that can be created
    max-wait-time-in-millis
        amount of time the caller will wait before getting a
        connection timeout. The default is 60 seconds. A value of 0
        will force caller to wait indefinitely.
    name
        unique name of the pool definition.
    non-transactional-connections
        A pool with this property set to true returns
        non-transactional connections. This connection does not get
        automatically enlisted with the transaction manager.
    ping
        A pool with this attribute set to true is pinged during the pool
        creation or reconfiguration to identify and warn of any erroneous
        values for the its attributes. Default value of this attribute
        is false.
    pool-resize-quantity
        number of connections to be removed when
        idle-timeout-in-seconds timer expires. Connections that have
        idled for longer than the timeout are candidates for removal.
        When the pool size reaches steady-pool-size, the connection
        removal stops.
    pooling
        When set to false, this attribute disables connection pooling.
        Default value of this attribute is true.
    res-type
        DataSource implementation class could implement one of of
        javax.sql.DataSource, javax.sql.XADataSource or
        javax.sql.ConnectionPoolDataSource interfaces. To support
        configuration of JDBC drivers and applications that use
        java.sql.Driver implementations, set this attribute to
        java.sql.Driver. This optional attribute must be specified to
    disambiguate when a Datasource class implements two or more of
    these interfaces or when a driver classname is to be provided.
    An error is produced when this attribute has a legal value and the
        indicated interface is not implemented by the datasource
        class. This attribute has no default value. (see also driver-classname).
    sql-trace-listeners
        Used to set if the SQL statements executed by applications need to be traced,
    enabling easy filtering of SQL statements executed as log messages.
        Aids administrators in analysing the statements. Multiple listeners can be
        specified as comma separated list of listener implementation class names,
    to enable different means of recording the SQL trace records.
    statement-cache-size
        Specifies the number of statements to be cached. The only cache
    eviction strategy supported in this release is "Least Recently Used".
    The default value is 0 and statement caching is not enabled. Specify a
    non-zero integer value to enable statement caching.
    statement-timeout-in-seconds
        Sets the timeout property of a connection to enable
        termination of abnormally long running queries. Default value
        of -1 implies that it is not enabled.
    statement-leak-reclaim
        If enabled, statement is reclaimed after the statement-leak-timeout-
        in-seconds occurs. Default value is false.
    statement-leak-timeout-in-seconds
        To aid user in detecting the statement leaks by applications.
        When a statement is not closed by the application within the specified
        period, it is assumed to be a statement leak. Default is 0, which
        implies there is no statement leak detection, by default. A
        positive non-zero value turns on statement leak detection.
        Note however that, this attribute only detects if there is
        a statement leak. The statement can be reclaimed only is
        statement-leak-reclaim is set to true.
    steady-pool-size
        minimum and initial number of connections maintained in the
        pool.
    transaction-isolation-level
        Specifies the Transaction Isolation Level on the pooled
        database connections. Optional. Has no default. If left
        unspecified the pool operates with default isolation level
        provided by the JDBC Driver. A desired isolation level can be
        set using one of the standard transaction isolation levels,
        which see.

        Applications that change the Isolation level on a pooled connection
        programmatically, risk polluting the pool and this could lead to
        program errors. Also see: is-isolation-level-guaranteed

    validate-atmost-once-period-in-seconds
        Used to set the time-interval within which a connection is
        validated atmost once. Default is 0 which implies that it is
        not enabled. TBD: Documentation is to be corrected.
    validation-classname
        Specifies the custom validation implementation class name to be used
    for validation. This parameter is mandatory if the
    connection-validation-type is set to custom-validation. The specified
    class must implement the org.glassfish.api.jdbc.ConnectionValidation
    interface and must be accessible by the application server.
    validation-table-name
        specifies the table name to be used to perform a query to
        validate a connection. This parameter is mandatory, if
    is-connection-validation-required is set to true and
    connection-validation-type set to table. Verification by
        accessing a user specified table may become necessary for
        connection validation, particularly if database driver caches
        calls to setAutoCommit() and getMetaData().
    wrap-jdbc-objects
        When set to true, application will get wrapped jdbc objects
        for Statement, PreparedStatement, CallableStatement,
        ResultSet, DatabaseMetaData. Defaults to true.

  Used in:
    resources
-->
<!ELEMENT jdbc-connection-pool (description?, property*)>

<!ATTLIST jdbc-connection-pool
    name CDATA #REQUIRED
    datasource-classname CDATA #IMPLIED
    res-type (javax.sql.DataSource | javax.sql.XADataSource | javax.sql.ConnectionPoolDataSource | java.sql.Driver) #IMPLIED
    driver-classname CDATA #IMPLIED
    ping %boolean; "false"
    steady-pool-size CDATA "8"
    max-pool-size CDATA "32"
    max-wait-time-in-millis CDATA "60000"
    pool-resize-quantity CDATA "2"
    idle-timeout-in-seconds CDATA "300"
    transaction-isolation-level %isolation; #IMPLIED
    is-isolation-level-guaranteed %boolean; "true"
    is-connection-validation-required %boolean; "false"
    connection-validation-method (auto-commit | meta-data | table | custom-validation) "table"
    validation-table-name CDATA #IMPLIED
    validation-classname CDATA #IMPLIED
    init-sql CDATA #IMPLIED
    fail-all-connections %boolean; "false"
    non-transactional-connections %boolean; "false"
    allow-non-component-callers %boolean; "false"
    validate-atmost-once-period-in-seconds CDATA "0"
    connection-leak-timeout-in-seconds CDATA "0"
    connection-leak-reclaim %boolean; "false"
    connection-creation-retry-attempts CDATA "0"
    connection-creation-retry-interval-in-seconds CDATA "10"
    statement-leak-timeout-in-seconds CDATA "0"
    statement-leak-reclaim %boolean; "false"
    statement-timeout-in-seconds CDATA "-1"
    lazy-connection-enlistment %boolean; "false"
    lazy-connection-association %boolean; "false"
    log-jdbc-calls %boolean; "false"
    associate-with-thread %boolean; "false"
    match-connections %boolean; "false"
    max-connection-usage-count CDATA "0"
    sql-trace-listeners CDATA #IMPLIED
    statement-cache-size CDATA "0"
    pooling %boolean; "true"
    wrap-jdbc-objects %boolean; "true">


<!-- connector-connection-pool
    connector-connection-pool defines configuration used to create
    and manage a pool of connections to a EIS. Pool definition is
    named, and can be referred to by multiple connector-resource
    elements (See connector-resource).

    Each named pool definition results in a pool instantiated at server
    start-up. Pool is populated when accessed for the first time. If two or
    more connector-resource elements point to the same
    connector-connection-pool element, they are using the same pool of
    connections, at run time.

    There can be more than one pool for one connection-definition in one
    resource-adapter.


  children
    property
        Properties are used to override the ManagedConnectionFactory
        javabean configuration settings.

        When one or more of these properties are specified, they are passed as
        is using set<Name>(<Value>) methods to the Resource Adapter's
        ManagedConnectionfactory class (specified in ra.xml).


  attributes
    associate-with-thread
        Associate a connection with the thread such that when the
        same thread is in need of a connection, it can reuse the
        connection already associated with that thread, thereby not
        incurring the overhead of getting a connection from the pool.
        Default value is false.
    connection-creation-retry-attempts
        The number of attempts to create a new connection. Default is
        0, which implies no retries.
    connection-creation-retry-interval-in-seconds
        The time interval between retries while attempting to create
        a connection. Default is 10 seconds. Effective when
        connection-creation-retry-attempts is greater than 0.
    connection-definition-name
        unique name, identifying one connection-definition in a
        Resource Adapter. Currently this is ConnectionFactory type.
    connection-leak-reclaim
        If enabled, connection will be reusable (put back into pool)
        after connection-leak-timeout-in-seconds occurs. Default
        value is false.
    connection-leak-timeout-in-seconds
        To aid user in detecting potential connection leaks by the
        application. When a connection is not returned back to the
        pool by the application within the specified period, it is
        assumed to be a potential leak and stack trace of the caller
        will be logged. Default is 0, which implies there is no leak
        detection, by default. A positive non-zero value turns on
        leak detection. Note however that, this attribute only
        detects if there is a connection leak. The connection can be
        reclaimed only if connection-leak-reclaim is set to true.
    fail-all-connections
        indicates if all connections in the pool must be closed
        should a single connection fail validation. The default is
        false. One attempt will be made to re-establish failed
        connections.
    idle-timeout-in-seconds
        maximum time in seconds, that a connection can remain idle in
        the pool. After this time, the pool implementation can close
        this connection. Note that this does not control connection
        timeouts enforced at the database server side. Adminsitrators
        are advised to keep this timeout shorter than the EIS
        connection timeout (if such timeouts are configured on the
        specific EIS), to prevent accumulation of unusable connection
        in Application Server.
    is-connection-validation-required
        This attribute specifies if the connection that is about to
        be returned is to be validated by the container,
    lazy-connection-association
        Connections are lazily associated when an operation is
        performed on them. Also, they are disassociated when the
        transaction is completed and a component method ends, which
        helps reuse of the physical connections. Default value is
        false.
    lazy-connection-enlistment
        Enlist a resource to the transaction only when it is actually
        used in a method, which avoids enlistment of connections that
        are not used in a transaction. This also prevents unnecessary
        enlistment of connections cached in the calling components.
        Default value is false.
    match-connections
        To switch on/off connection matching for the pool. It can be
        set to false if the administrator knows that the connections
        in the pool will always be homogeneous and hence a connection
        picked from the pool need not be matched by the resource
        adapter. Default value is true.
    max-connection-usage-count
        When specified, connections will be re-used by the pool for
        the specified number of times after which it will be closed.
        This is useful for instance, to avoid statement-leaks.
        Default value is 0, which implies the feature is not enabled.
    max-pool-size
        maximum number of conections that can be created
    max-wait-time-in-millis
        amount of time the caller will wait before getting a
        connection timeout. The default is 60 seconds. A value of 0
        will force caller to wait indefinitely.
    name
        unique name of the pool definition.
    ping
        A pool with this attribute set to true is pinged during the pool
        creation or reconfiguration to identify and warn of any erroneous
        values for the its attributes. Default value of this attribute
        is false.
    pool-resize-quantity
        number of connections to be removed when
        idle-timeout-in-seconds timer expires. Connections that have
        idled for longer than the timeout are candidates for removal.
        When the pool size reaches steady-pool-size, the connection
        removal stops.
    pooling
       When set to false, this attribute disables connection pooling.
       Default value of this attribute is true.
    resource-adapter-name
        This is the name of resource adapter. Name of .rar file is
        taken as the unique name for the resource adapter.
    steady-pool-size
        minimum and initial number of connections maintained in the
        pool.
    transaction-support
        Indicates the level of transaction support that this pool
        will have. Possible values are "XATransaction",
        "LocalTransaction" and "NoTransaction". This attribute will
        override that transaction support attribute in the Resource
        Adapter in a downward compatible way, i.e it can support a
        lower/equal transaction level than specified in the RA, but
        not a higher level.
    validate-atmost-once-period-in-seconds
        Used to set the time-interval within which a connection is
        validated atmost once. Default is 0 which implies that it is
        not enabled. TBD: Documentation is to be corrected.

  Used in:
    resources
-->
<!ELEMENT connector-connection-pool (description?, security-map*, property*)>

<!ATTLIST connector-connection-pool
    name CDATA #REQUIRED
    resource-adapter-name CDATA #REQUIRED
    connection-definition-name CDATA #REQUIRED
    steady-pool-size CDATA "8"
    max-pool-size CDATA "32"
    max-wait-time-in-millis CDATA "60000"
    pool-resize-quantity CDATA "2"
    idle-timeout-in-seconds CDATA "300"
    fail-all-connections %boolean; "false"
    transaction-support (XATransaction | LocalTransaction | NoTransaction) #IMPLIED
    is-connection-validation-required %boolean; "false"
    validate-atmost-once-period-in-seconds CDATA "0"
    connection-leak-timeout-in-seconds CDATA "0"
    connection-leak-reclaim %boolean; "false"
    connection-creation-retry-attempts CDATA "0"
    connection-creation-retry-interval-in-seconds CDATA "10"
    lazy-connection-enlistment %boolean; "false"
    lazy-connection-association %boolean; "false"
    associate-with-thread %boolean; "false"
    match-connections %boolean; "true"
    max-connection-usage-count CDATA "0"
    ping %boolean; "false"
    pooling %boolean; "true">



<!-- property
    Syntax for supplying properties as name value pairs

  Used in:
    admin-object-resource, connector-connection-pool,
    connector-resource, custom-resource, external-jndi-resource,
    jdbc-connection-pool, jdbc-resource, mail-resource,
    work-security-map, resource-adapter-config
-->
<!ELEMENT property (description?)>

<!ATTLIST property
    name CDATA #REQUIRED
    value CDATA #REQUIRED>


<!-- security-map
    Perform mapping from principal received during Servlet/EJB
    authentication, to credentials accepted by the EIS. This mapping
    is optional.It is possible to map multiple (server) principal to
    the same backend principal.

  Used in:
    connector-connection-pool
-->
<!ELEMENT security-map ((principal | user-group)+, backend-principal)>

<!ATTLIST security-map
    name CDATA #REQUIRED>


<!-- principal
    Principal of the Servlet and EJB client

  Used in:
    security-map
-->
<!ELEMENT principal (#PCDATA)>


<!-- user-group

  Used in:
    security-map
-->
<!ELEMENT user-group (#PCDATA)>


<!-- backend-principal

  Used in:
    security-map
-->
<!ELEMENT backend-principal EMPTY>

<!ATTLIST backend-principal
    user-name CDATA #REQUIRED
    password CDATA #IMPLIED>

<!-- work-security-map
  Perform mapping from Principal associated with an incoming Work
  instance to a Principal in the application server's security domain. The
  security-map element, on the other hand, performs mapping from
  Principals in the application server security domain to a Principal
  accepted by the EIS. It is possible to map multiple EIS Group and/or
  User Principals to the same application server (server) Principal.

 Used in:
   resources
-->

<!ELEMENT work-security-map (description?, (principal-map*, group-map*)+) >

<!ATTLIST work-security-map
    name CDATA #REQUIRED
    resource-adapter-name CDATA #REQUIRED
    object-type %object-type; "user"
    enabled %boolean; "true">

<!-- principal-map
  Performs mapping from a Principal in the EIS security domain to
  a Principal accepted by the application server security domain

  attributes
    eis-principal
        A Principal in the EIS security domain that is being mapped to
        a Principal in the application server's security domain.
    mapped-principal
        A Principal that is valid in the application server's security domain

  Used in:
    work-security-map
-->
<!ELEMENT principal-map EMPTY >

<!ATTLIST principal-map
    eis-principal CDATA #REQUIRED
    mapped-principal CDATA #REQUIRED>

<!-- group-map
  Group map to map eis-group name to application server domain's group name

  attributes
    eis-group
        A Group in the EIS security domain that is being mapped to
        a Group in the application server's security domain
    mapped-group
        A Group that is valid in the application server's security domain

  Used in:
    work-security-map
-->
<!ELEMENT group-map EMPTY >

<!ATTLIST group-map
    eis-group CDATA #REQUIRED
    mapped-group CDATA #REQUIRED>

<!-- managed-executor-service
    ManagedExecutorService resource definition

  attributes
    jndi_name
        The JNDI name of this resource.

    enabled
        Determines whether the resource is enabled at runtime. The default
        value is true.

    context-info-enabled
        Determines whether container contexts are propagated to threads. If
        set to true, the contexts specified in the contextinfo option are
        propagated. If set to false, no contexts are propagated and the
        contextinfo option is ignored. The default value is true.

    context-info
        Specifies individual container contexts to propagate to threads.
        Valid values are Classloader, JNDI, Security, and WorkArea. Values
        are specified in a comma-separated list and are case-insensitive.
        All contexts are propagated by default.

    thread-priority
        Specifies the priority to assign to created threads. The default
        value is 5.

    long-runnings-tasks
        Specifies whether the resource should be used for long-running
        tasks. The default value is false. If set to true, long-running
        tasks are not reported as stuck.

    hung-after-seconds
        Specifies the number of seconds that a task can execute before it
        is considered unresponsive. The default value is 0, which means
        that tasks are never considered unresponsive.

    core-pool-size
        Specifies the number of threads to keep in a thread pool, even if
        they are idle. The default value is 0.

        When a new task is submitted and the number of running threads is
        less than corepoolsize, a new thread is created to handle the
        request. When the value for corepoolsize is 0 (the default), new
        threads are never created unless the task queue is full or the
        resource is using direct queuing. Direct queuing occurs when
        taskqueuecapacity is 0, or when taskqueuecapacity is 2147483647 and
        corepoolsize is 0.

    maximum-pool-size
        Specifies the maximum number of threads that a thread pool can
        contain. The default value is 2147483647, which means that the
        thread pool is essentially unbounded and can contain any number of
        threads.

    keep-alive-seconds
        Specifies the number of seconds that threads can remain idle when
        the number of threads is greater than corepoolsize. The default
        value is 60.

    thread-lifetime-seconds
        Specifies the number of seconds that threads can remain in a thread
        pool before being purged, regardless of whether the number of
        threads is greater than corepoolsize or whether the threads are
        idle. The default value is 0, which means that threads are never
        purged.

    task-queue-capacity
        Specifies the number of submitted tasks that can be stored in the
        task queue awaiting execution. The default value is 2147483647,
        which means that the task queue is essentially unbounded and can
        store any number of submitted tasks.

  children
        description
            Textual Description

  Used in:
    resources
-->
<!ELEMENT managed-executor-service (description?)>

<!ATTLIST managed-executor-service
    jndi-name CDATA #REQUIRED
    enabled %boolean; "true"
    context-info-enabled %boolean; "true"
    context-info CDATA "Classloader,JNDI,Security,WorkArea"
    core-pool-size CDATA "0"
    maximum-pool-size CDATA "2147483647"
    thread-priority CDATA "5"
    long-runnings-tasks %boolean; "false"
    hung-after-seconds CDATA "0"
    core-pool-size CDATA "0"
    keep-alive-seconds CDATA "60"
    thread-lifetime-seconds CDATA "0"
    task-queue-capacity CDATA "2147483647"
    >

<!-- managed-scheduled-executor-service
    ManagedScheduledExecutorService resource definition

  attributes
    jndi_name
        The JNDI name of this resource.

    enabled
        Determines whether the resource is enabled at runtime. The default
        value is true.

    context-info-enabled
        Determines whether container contexts are propagated to threads. If
        set to true, the contexts specified in the contextinfo option are
        propagated. If set to false, no contexts are propagated and the
        contextinfo option is ignored. The default value is true.

    context-info
        Specifies individual container contexts to propagate to threads.
        Valid values are Classloader, JNDI, Security, and WorkArea. Values
        are specified in a comma-separated list and are case-insensitive.
        All contexts are propagated by default.

    thread-priority
        Specifies the priority to assign to created threads. The default
        value is 5.

    long-runnings-tasks
        Specifies whether the resource should be used for long-running
        tasks. The default value is false. If set to true, long-running
        tasks are not reported as stuck.

    hung-after-seconds
        Specifies the number of seconds that a task can execute before it
        is considered unresponsive. The default value is 0, which means
        that tasks are never considered unresponsive.

    core-pool-size
        Specifies the number of threads to keep in a thread pool, even if
        they are idle. The default value is 0, which means that a thread is
        created when the first task is scheduled.

    keep-alive-seconds
        Specifies the number of seconds that threads can remain idle when
        the number of threads is greater than corepoolsize. The default
        value is 60.

    thread-lifetime-seconds
        Specifies the number of seconds that threads can remain in a thread
        pool before being purged, regardless of whether the number of
        threads is greater than corepoolsize or whether the threads are
        idle. The default value is 0, which means that threads are never
        purged.

  children
        description
            Textual Description

  Used in:
    resources
-->
<!ELEMENT managed-scheduled-executor-service (description?)>

<!ATTLIST managed-scheduled-executor-service
    jndi-name CDATA #REQUIRED
    enabled %boolean; "true"
    context-info-enabled %boolean; "true"
    context-info CDATA "Classloader,JNDI,Security,WorkArea"
    core-pool-size CDATA "0"
    thread-priority CDATA "5"
    long-runnings-tasks %boolean; "false"
    hung-after-seconds CDATA "0"
    core-pool-size CDATA "0"
    keep-alive-seconds CDATA "60"
    thread-lifetime-seconds CDATA "0"
    >

<!-- managed-thread-factory
    ManagedThreadFactory resource definition

  attributes
    jndi_name
        The JNDI name of this resource.

    enabled
        Determines whether the resource is enabled at runtime. The default
        value is true.

    context-info-enabled
        Determines whether container contexts are propagated to threads. If
        set to true, the contexts specified in the contextinfo option are
        propagated. If set to false, no contexts are propagated and the
        contextinfo option is ignored. The default value is true.

    context-info
        Specifies individual container contexts to propagate to threads.
        Valid values are Classloader, JNDI, Security, and WorkArea. Values
        are specified in a comma-separated list and are case-insensitive.
        All contexts are propagated by default.

    thread-priority
        Specifies the priority to assign to created threads. The default
        value is 5.

  children
        description
            Textual Description

  Used in:
    resources
-->
<!ELEMENT managed-thread-factory (description?)>

<!ATTLIST managed-thread-factory
    jndi-name CDATA #REQUIRED
    enabled %boolean; "true"
    context-info-enabled %boolean; "true"
    context-info CDATA "Classloader,JNDI,Security,WorkArea"
    core-pool-size CDATA "0"
    thread-priority CDATA "5"
    >

