www.ironjacamar.orgCommunity Documentation

Appendix A. Schemas

Table of Contents

A.1. Java EE Connector Architecture 1.7
A.2. Java EE Connector Architecture 1.6
A.3. Java EE Connector Architecture 1.5
A.4. Java EE Connector Architecture 1.0
A.5. IronJacamar 1.0
A.6. IronJacamar 1.1
A.7. IronJacamar 1.2
A.8. Resource adapters 1.0
A.9. Resource adapters 1.1
A.10. Resource adapters 1.2
A.11. Datasources 1.0
A.12. Datasources 1.1
A.13. Datasources 1.2
A.14. Datasources 1.3

All the IronJacamar schemas are deployed under http://www.ironjacamar.org/schema/.



      <?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://xmlns.jcp.org/xml/ns/javaee"
            xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            version="1.7">
  <xsd:annotation>
    <xsd:documentation>

      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
      
      Copyright (c) 2009-2013 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://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
      or packager/legal/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 packager/legal/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.
      
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
      
      Copyright 2003-2013 Sun Microsystems, Inc. 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://glassfish.dev.java.net/public/CDDL+GPL.html or
      glassfish/bootstrap/legal/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
      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
      particular file as subject to the "Classpath" exception as
      provided by Sun in the GPL Version 2 section of the License file
      that accompanied this code.  If applicable, add the following
      below the License Header, with the fields enclosed by brackets []
      replaced by your own identifying information:
      "Portions Copyrighted [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.
      
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>
      <![CDATA[[
      This is the XML Schema for the Connector 1.7 deployment
      descriptor.  The deployment descriptor must be named
      "META-INF/ra.xml" in the connector's rar file.  All Connector
      deployment descriptors must indicate the connector resource
      adapter schema by using the Java EE namespace:
      
      http://xmlns.jcp.org/xml/ns/javaee
      
      and by indicating the version of the schema by
      using the version element as shown below:
      
      <connector xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd"
      version="1.7">
      ...
      </connector>
      
      The instance documents may indicate the published version of
      the schema using the xsi:schemaLocation attribute for Java EE
      namespace with the following location:
      
      http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd
      
      ]]>
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      The following conventions apply to all Java EE
      deployment descriptor elements unless indicated otherwise.
      
      - In elements that specify a pathname to a file within the
      same JAR file, relative filenames (i.e., those not
      starting with "/") are considered relative to the root of
      the JAR file's namespace.  Absolute filenames (i.e., those
      starting with "/") also specify names in the root of the
      JAR file's namespace.  In general, relative names are
      preferred.  The exception is .war files where absolute
      names are preferred for consistency with the Servlet API.
      
    </xsd:documentation>
  </xsd:annotation>

  <xsd:include schemaLocation="javaee_7.xsd"/>


<!-- **************************************************** -->

  <xsd:element name="connector"
               type="javaee:connectorType">
    <xsd:annotation>
      <xsd:documentation>

        The connector element is the root element of the deployment
        descriptor for the resource adapter. This element includes
        general information - vendor name, resource adapter version,
        icon - about the resource adapter module. It also includes
        information specific to the implementation of the resource
        adapter library as specified through the element
        resourceadapter.
        
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>


<!-- **************************************************** -->

  <xsd:complexType name="activationspecType">
    <xsd:annotation>
      <xsd:documentation>

        The activationspecType specifies an activation
        specification.  The information includes fully qualified
        Java class name of an activation specification and a set of
        required configuration property names.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="activationspec-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element activationspec-class specifies the fully
            qualified Java class name of the activation
            specification class. This class must implement the
            javax.resource.spi.ActivationSpec interface. The
            implementation of this class is required to be a
            JavaBean.
            
            Example:
                  <activationspec-class>com.wombat.ActivationSpecImpl
                  </activationspec-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="required-config-property"
                   type="javaee:required-config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            The required-config-property element is deprecated since
            Connectors 1.6 specification. The resource adapter 
            implementation is recommended to use the @NotNull
            Bean Validation annotation or its XML validation
            descriptor equivalent to indicate that a configuration
            property is required to be specified by the deployer.
            See the Connectors specification for more information. 
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="adminobjectType">
    <xsd:annotation>
      <xsd:documentation>

        The adminobjectType specifies information about an
        administered object.  Administered objects are specific to a
        messaging style or message provider.  This contains
        information on the Java type of the interface implemented by
        an administered object, its Java class name and its
        configuration properties.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="adminobject-interface"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element adminobject-interface specifies the
            fully qualified name of the Java type of the
            interface implemented by an administered object.
            
            Example:
                <adminobject-interface>javax.jms.Destination
                </adminobject-interface>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="adminobject-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element adminobject-class specifies the fully
            qualified Java class name of an administered object.
            
            Example:
                  <adminobject-class>com.wombat.DestinationImpl
                  </adminobject-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="authentication-mechanismType">
    <xsd:annotation>
      <xsd:documentation>

        The authentication-mechanismType specifies an authentication
        mechanism supported by the resource adapter. Note that this
        support is for the resource adapter and not for the
        underlying EIS instance. The optional description specifies
        any resource adapter specific requirement for the support of
        security contract and authentication mechanism.
        
        Note that BasicPassword mechanism type should support the
        javax.resource.spi.security.PasswordCredential interface.
        The Kerbv5 mechanism type should support the
        org.ietf.jgss.GSSCredential interface or the deprecated
        javax.resource.spi.security.GenericCredential interface.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="authentication-mechanism-type"
                   type="javaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element authentication-mechanism-type specifies
            type of an authentication mechanism.
            
            The example values are:
            
            <authentication-mechanism-type>BasicPassword
            </authentication-mechanism-type>
            
            <authentication-mechanism-type>Kerbv5
            </authentication-mechanism-type>
            
            Any additional security mechanisms are outside the
            scope of the Connector architecture specification.
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="credential-interface"
                   type="javaee:credential-interfaceType"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="config-property-nameType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[[
        The config-property-nameType contains the name of a
        configuration property.
        
        The connector architecture defines a set of well-defined
        properties all of type java.lang.String. These are as
        follows.
        
        ServerName
        PortNumber
        UserName
        Password
        ConnectionURL
        
        A resource adapter provider can extend this property set to
        include properties specific to the resource adapter and its
        underlying EIS.
        
        Possible values include
              ServerName
              PortNumber
              UserName
              Password
              ConnectionURL
        
        Example: <config-property-name>ServerName</config-property-name>
        
        ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdStringType"/>
    </xsd:simpleContent>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="config-property-typeType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[[
        The config-property-typeType contains the fully
        qualified Java type of a configuration property.
        
        The following are the legal values:
        java.lang.Boolean, java.lang.String, java.lang.Integer,
        java.lang.Double, java.lang.Byte, java.lang.Short,
        java.lang.Long, java.lang.Float, java.lang.Character
        
        Used in: config-property
        
        Example:
        <config-property-type>java.lang.String</config-property-type>
        
        ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string">
        <xsd:enumeration value="java.lang.Boolean"/>
        <xsd:enumeration value="java.lang.String"/>
        <xsd:enumeration value="java.lang.Integer"/>
        <xsd:enumeration value="java.lang.Double"/>
        <xsd:enumeration value="java.lang.Byte"/>
        <xsd:enumeration value="java.lang.Short"/>
        <xsd:enumeration value="java.lang.Long"/>
        <xsd:enumeration value="java.lang.Float"/>
        <xsd:enumeration value="java.lang.Character"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="config-propertyType">
    <xsd:annotation>
      <xsd:documentation>

        The config-propertyType contains a declaration of a single
        configuration property that may be used for providing
        configuration information.
        
        The declaration consists of an optional description, name,
        type and an optional value of the configuration property. If
        the resource adapter provider does not specify a value than
        the deployer is responsible for providing a valid value for
        a configuration property.
        
        Any bounds or well-defined values of properties should be
        described in the description element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="config-property-name"
                   type="javaee:config-property-nameType"/>
      <xsd:element name="config-property-type"
                   type="javaee:config-property-typeType"/>
      <xsd:element name="config-property-value"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element config-property-value contains the value
            of a configuration entry. Note, it is possible for a
            resource adapter deployer to override this
            configuration information during deployment.
            
            Example:
            <config-property-value>WombatServer</config-property-value>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property-ignore"
                   type="javaee:true-falseType"
                   minOccurs="0"
                   maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>

            The element config-property-ignore is used to specify 
            whether the configuration tools must ignore considering the 
            configuration property during auto-discovery of
            Configuration properties. See the Connector specification for
            more details. If unspecified, the container must not ignore
            the configuration property during auto-discovery.
            This element must be one of the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property-supports-dynamic-updates"
                   type="javaee:true-falseType"
                   minOccurs="0"
                   maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>

            The element config-property-supports-dynamic-updates is used to specify 
            whether the configuration property allows its value to be updated, by
            application server's configuration tools, during the lifetime of
            the JavaBean instance. See the Connector specification for
            more details. If unspecified, the container must not dynamically
            reconfigure the property.
            This element must be one of the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property-confidential"
                   type="javaee:true-falseType"
                   minOccurs="0"
                   maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>

            The element config-property-confidential is used to specify 
            whether the configuration property is confidential and
            recommends application server's configuration tools to use special 
            visual aids for editing them. See the Connector specification for
            more details. If unspecified, the container must not treat the
            property as confidential.
            This element must be one of the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="connection-definitionType">
    <xsd:annotation>
      <xsd:documentation>

        The connection-definitionType defines a set of connection
        interfaces and classes pertaining to a particular connection
        type. This also includes configurable properties for
        ManagedConnectionFactory instances that may be produced out
        of this set.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="managedconnectionfactory-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element managedconnectionfactory-class specifies
            the fully qualified name of the Java class that
            implements the
            javax.resource.spi.ManagedConnectionFactory interface.
            This Java class is provided as part of resource
            adapter's implementation of connector architecture
            specified contracts. The implementation of this
            class is required to be a JavaBean.
            
            Example:
            <managedconnectionfactory-class>
                  com.wombat.ManagedConnectionFactoryImpl
            </managedconnectionfactory-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="connectionfactory-interface"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element connectionfactory-interface specifies
            the fully qualified name of the ConnectionFactory
            interface supported by the resource adapter.
            
            Example:
            <connectionfactory-interface>com.wombat.ConnectionFactory
            </connectionfactory-interface>
            
            OR
            
            <connectionfactory-interface>javax.resource.cci.ConnectionFactory
            </connectionfactory-interface>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="connectionfactory-impl-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element connectionfactory-impl-class specifies
            the fully qualified name of the ConnectionFactory
            class that implements resource adapter
            specific ConnectionFactory interface.
            
            Example:
            
            <connectionfactory-impl-class>com.wombat.ConnectionFactoryImpl
            </connectionfactory-impl-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="connection-interface"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The connection-interface element specifies the fully
            qualified name of the Connection interface supported
            by the resource adapter.
            
            Example:
            
                  <connection-interface>javax.resource.cci.Connection
                  </connection-interface>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="connection-impl-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The connection-impl-classType specifies the fully
            qualified name of the Connection class that
            implements resource adapter specific Connection
            interface.  It is used by the connection-impl-class
            elements.
            
            Example:
            
                  <connection-impl-class>com.wombat.ConnectionImpl
                  </connection-impl-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="connectorType">
    <xsd:annotation>
      <xsd:documentation>

        The connectorType defines a resource adapter.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="module-name"
                   type="javaee:string"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element module-name specifies the name of the
            resource adapter.
            
            If there is no module-name specified, the module-name
            is determined as defined in Section EE.8.1.1 and EE.8.1.2 
            of the Java Platform, Enterprise Edition (Java EE) 
            Specification, version 6.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="javaee:descriptionGroup"/>
      <xsd:element name="vendor-name"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element vendor-name specifies the name of
            resource adapter provider vendor.
            
            If there is no vendor-name specified, the application 
            server must consider the default "" (empty string) as
            the name of the resource adapter provider vendor.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="eis-type"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element eis-type contains information about the
            type of the EIS. For example, the type of an EIS can
            be product name of EIS independent of any version
            info.
            
            This helps in identifying EIS instances that can be
            used with this resource adapter.
            
            If there is no eis-type specified, the application 
            server must consider the default "" (empty string) as
            the type of the EIS.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="resourceadapter-version"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element resourceadapter-version specifies a string-based version
            of the resource adapter from the resource adapter
            provider.
            
            If there is no resourceadapter-version specified, the application 
            server must consider the default "" (empty string) as
            the version of the resource adapter.
                
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="license"
                   type="javaee:licenseType"
                   minOccurs="0"/>
      <xsd:element name="resourceadapter"
                   type="javaee:resourceadapterType"/>
      <xsd:element name="required-work-context"
                   type="javaee:fully-qualified-classType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            The element required-work-context specifies a fully qualified class 
            name that implements WorkContext interface, that the resource adapter 
            requires the application server to support.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="version"
                   type="javaee:dewey-versionType"
                   fixed="1.7"
                   use="required">
      <xsd:annotation>
        <xsd:documentation>

          The version indicates the version of the schema to be used by the
          deployment tool. This element doesn't have a default, and the resource adapter 
          developer/deployer is required to specify it. The element allows the deployment 
          tool to choose which schema to validate the descriptor against.
              
          
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="metadata-complete"
                   type="xsd:boolean">
      <xsd:annotation>
        <xsd:documentation>

          The metadata-complete attribute defines whether the deployment 
          descriptor for the resource adapter module is complete, or whether
          the class files available to the module and packaged with the resource 
          adapter should be examined for annotations that specify deployment 
          information.
          
          If metadata-complete is set to "true", the deployment tool of the 
          application server must ignore any annotations that specify deployment 
          information, which might be present in the class files of the 
          application.If metadata-complete is not specified or is set to "false", 
          the deployment tool must examine the class files of the application for 
          annotations, as specified by this specification. If the 
          deployment descriptor is not included or is included but not marked 
          metadata-complete, the deployment tool will process annotations.
          
          Application servers must assume that metadata-complete is true for 
          resource adapter modules with deployment descriptor version 
          lower than 1.6.
                
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="credential-interfaceType">
    <xsd:annotation>
      <xsd:documentation>

        The credential-interfaceType specifies the
        interface that the resource adapter implementation
        supports for the representation of the
        credentials. This element(s) that use this type,
        i.e. credential-interface,  should be used by
        application server to find out the Credential
        interface it should use as part of the security
        contract.
        
        The possible values are:
        
        javax.resource.spi.security.PasswordCredential
        org.ietf.jgss.GSSCredential
        javax.resource.spi.security.GenericCredential
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:fully-qualified-classType">
        <xsd:enumeration value="javax.resource.spi.security.PasswordCredential"/>
        <xsd:enumeration value="org.ietf.jgss.GSSCredential"/>
        <xsd:enumeration value="javax.resource.spi.security.GenericCredential"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="inbound-resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The inbound-resourceadapterType specifies information
        about an inbound resource adapter. This contains information
        specific to the implementation of the resource adapter
        library as specified through the messageadapter element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="messageadapter"
                   type="javaee:messageadapterType"
                   minOccurs="0">
        <xsd:unique name="messagelistener-type-uniqueness">
          <xsd:annotation>
            <xsd:documentation>

              The messagelistener-type element content must be
              unique in the messageadapter. Several messagelisteners
              can not use the same messagelistener-type.
              
            </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:messagelistener"/>
          <xsd:field xpath="javaee:messagelistener-type"/>
        </xsd:unique>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="licenseType">
    <xsd:annotation>
      <xsd:documentation>

        The licenseType specifies licensing requirements for the
        resource adapter module. This type specifies whether a
        license is required to deploy and use this resource adapter,
        and an optional description of the licensing terms
        (examples: duration of license, number of connection
        restrictions). It is used by the license element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="license-required"
                   type="javaee:true-falseType">
        <xsd:annotation>
          <xsd:documentation>

            The element license-required specifies whether a
            license is required to deploy and use the
            resource adapter. This element must be one of
            the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="messageadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The messageadapterType specifies information about the
        messaging capabilities of the resource adapter. This
        contains information specific to the implementation of the
        resource adapter library as specified through the
        messagelistener element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="messagelistener"
                   type="javaee:messagelistenerType"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="messagelistenerType">
    <xsd:annotation>
      <xsd:documentation>

        The messagelistenerType specifies information about a
        specific message listener supported by the messaging
        resource adapter. It contains information on the Java type
        of the message listener interface and an activation
        specification.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="messagelistener-type"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element messagelistener-type specifies the fully
            qualified name of the Java type of a message
            listener interface.
            
            Example:
            
                <messagelistener-type>javax.jms.MessageListener
                </messagelistener-type>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="activationspec"
                   type="javaee:activationspecType"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="outbound-resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The outbound-resourceadapterType specifies information about
        an outbound resource adapter. The information includes fully
        qualified names of classes/interfaces required as part of
        the connector architecture specified contracts for
        connection management, level of transaction support
        provided, one or more authentication mechanisms supported
        and additional required security permissions.
        
        If any of the outbound resource adapter elements (transaction-support,
        authentication-mechanism, reauthentication-support) is specified through
        this element or metadata annotations, and no  connection-definition is 
        specified as part of this element or through annotations, the 
        application server must consider this an error and fail deployment. 
        
        If there is no authentication-mechanism specified as part of
        this element or metadata annotations, then the resource adapter does 
        not support any standard security authentication mechanisms as 
        part of security contract. The application server ignores the security 
        part of the system contracts in this case.
        
        If there is no transaction-support specified as part of this element 
        or metadata annotation, then the application server must consider that 
        the resource adapter does not support either the resource manager local 
        or JTA transactions and must consider the transaction support as 
        NoTransaction. Note that resource adapters may specify the level of 
        transaction support to be used at runtime for a ManagedConnectionFactory 
        through the TransactionSupport interface.
        
        If there is no reauthentication-support specified as part of
        this element or metadata annotation, then the application server must consider 
        that the resource adapter does not support re-authentication of 
        ManagedConnections.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="connection-definition"
                   type="javaee:connection-definitionType"
                   maxOccurs="unbounded"
                   minOccurs="0"/>
      <xsd:element name="transaction-support"
                   type="javaee:transaction-supportType"
                   minOccurs="0"/>
      <xsd:element name="authentication-mechanism"
                   type="javaee:authentication-mechanismType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="reauthentication-support"
                   type="javaee:true-falseType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

                    The element reauthentication-support specifies
                    whether the resource adapter implementation supports
                    re-authentication of existing Managed- Connection
                    instance. Note that this information is for the
                    resource adapter implementation and not for the
                    underlying EIS instance. This element must have
                    either a "true" or "false" value.
            
                  
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="required-config-propertyType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[[
        The required-config-propertyType contains a declaration
        of a single configuration property used for specifying a
        required configuration property name. It is used
        by required-config-property elements.
        
        Usage of this type is deprecated from Connectors 1.6 specification. 
        Refer to required-config-property element for more information.
        
        Example:
        
        <required-config-property>
        <config-property-name>Destination</config-property-name>
        </required-config-property>
        
        ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="config-property-name"
                   type="javaee:config-property-nameType"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The resourceadapterType specifies information about the
        resource adapter. The information includes fully qualified
        resource adapter Java class name, configuration properties,
        information specific to the implementation of the resource
        adapter library as specified through the
        outbound-resourceadapter and inbound-resourceadapter
        elements, and an optional set of administered objects.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="resourceadapter-class"
                   type="javaee:fully-qualified-classType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element resourceadapter-class specifies the
            fully qualified name of a Java class that implements
            the javax.resource.spi.ResourceAdapter
            interface. This Java class is provided as part of
            resource adapter's implementation of connector
            architecture specified contracts. The implementation
            of this class is required to be a JavaBean.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="outbound-resourceadapter"
                   type="javaee:outbound-resourceadapterType"
                   minOccurs="0">
        <xsd:unique name="connectionfactory-interface-uniqueness">
          <xsd:annotation>
            <xsd:documentation>

              The connectionfactory-interface element content
              must be unique in the outbound-resourceadapter.
              Multiple connection-definitions can not use the
              same connectionfactory-type.
              
            </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:connection-definition"/>
          <xsd:field xpath="javaee:connectionfactory-interface"/>
        </xsd:unique>
      </xsd:element>
      <xsd:element name="inbound-resourceadapter"
                   type="javaee:inbound-resourceadapterType"
                   minOccurs="0"/>
      <xsd:element name="adminobject"
                   type="javaee:adminobjectType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:unique name="adminobject-type-uniqueness">
          <xsd:annotation>
            <xsd:documentation>

              The adminobject-interface and adminobject-class element content must be
              unique in the resourceadapterType. Several admin objects
              can not use the same adminobject-interface and adminobject-class.
              
            </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:adminobject"/>
          <xsd:field xpath="javaee:adminobject-interface"/>
          <xsd:field xpath="javaee:adminobject-class"/>
        </xsd:unique>
      </xsd:element>
      <xsd:element name="security-permission"
                   type="javaee:security-permissionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="security-permissionType">
    <xsd:annotation>
      <xsd:documentation>

        The security-permissionType specifies a security
        permission that is required by the resource adapter code.
        
        The security permission listed in the deployment descriptor
        are ones that are different from those required by the
        default permission set as specified in the connector
        specification. The optional description can mention specific
        reason that resource adapter requires a given security
        permission.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="security-permission-spec"
                   type="javaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>

            The element security-permission-spec specifies a security
            permission based on the Security policy file
            syntax. Refer to the following URL for Sun's
            implementation of the security permission
            specification:
            
            http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyFiles.html
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>

</xsd:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://java.sun.com/xml/ns/javaee"
            xmlns:javaee="http://java.sun.com/xml/ns/javaee"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            version="1.6">
  <xsd:annotation>
    <xsd:documentation>

      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
      
      Copyright 2003-2009 Sun Microsystems, Inc. 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://glassfish.dev.java.net/public/CDDL+GPL.html or
      glassfish/bootstrap/legal/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
      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
      particular file as subject to the "Classpath" exception as
      provided by Sun in the GPL Version 2 section of the License file
      that accompanied this code.  If applicable, add the following
      below the License Header, with the fields enclosed by brackets []
      replaced by your own identifying information:
      "Portions Copyrighted [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.
      
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
      
      Copyright 2003-2009 Sun Microsystems, Inc. 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://glassfish.dev.java.net/public/CDDL+GPL.html or
      glassfish/bootstrap/legal/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
      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
      particular file as subject to the "Classpath" exception as
      provided by Sun in the GPL Version 2 section of the License file
      that accompanied this code.  If applicable, add the following
      below the License Header, with the fields enclosed by brackets []
      replaced by your own identifying information:
      "Portions Copyrighted [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.
      
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>
      <![CDATA[[
      This is the XML Schema for the Connector 1.6 deployment
      descriptor.  The deployment descriptor must be named
      "META-INF/ra.xml" in the connector's rar file.  All Connector
      deployment descriptors must indicate the connector resource
      adapter schema by using the Java EE namespace:
      
      http://java.sun.com/xml/ns/javaee
      
      and by indicating the version of the schema by
      using the version element as shown below:
      
      <connector xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/connector_1_6.xsd"
      version="1.6">
      ...
      </connector>
      
      The instance documents may indicate the published version of
      the schema using the xsi:schemaLocation attribute for Java EE
      namespace with the following location:
      
      http://java.sun.com/xml/ns/javaee/connector_1_6.xsd
      
      ]]>
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      The following conventions apply to all Java EE
      deployment descriptor elements unless indicated otherwise.
      
      - In elements that specify a pathname to a file within the
      same JAR file, relative filenames (i.e., those not
      starting with "/") are considered relative to the root of
      the JAR file's namespace.  Absolute filenames (i.e., those
      starting with "/") also specify names in the root of the
      JAR file's namespace.  In general, relative names are
      preferred.  The exception is .war files where absolute
      names are preferred for consistency with the Servlet API.
      
    </xsd:documentation>
  </xsd:annotation>

  <xsd:include schemaLocation="javaee_6.xsd"/>


<!-- **************************************************** -->

  <xsd:element name="connector"
               type="javaee:connectorType">
    <xsd:annotation>
      <xsd:documentation>

        The connector element is the root element of the deployment
        descriptor for the resource adapter. This element includes
        general information - vendor name, resource adapter version,
        icon - about the resource adapter module. It also includes
        information specific to the implementation of the resource
        adapter library as specified through the element
        resourceadapter.
        
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>


<!-- **************************************************** -->

  <xsd:complexType name="activationspecType">
    <xsd:annotation>
      <xsd:documentation>

        The activationspecType specifies an activation
        specification.  The information includes fully qualified
        Java class name of an activation specification and a set of
        required configuration property names.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="activationspec-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element activationspec-class specifies the fully
            qualified Java class name of the activation
            specification class. This class must implement the
            javax.resource.spi.ActivationSpec interface. The
            implementation of this class is required to be a
            JavaBean.
            
            Example:
                  <activationspec-class>com.wombat.ActivationSpecImpl
                  </activationspec-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="required-config-property"
                   type="javaee:required-config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            The required-config-property element is deprecated since
            Connectors 1.6 specification. The resource adapter 
            implementation is recommended to use the @NotNull
            Bean Validation annotation or its XML validation
            descriptor equivalent to indicate that a configuration
            property is required to be specified by the deployer.
            See the Connectors specification for more information. 
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="adminobjectType">
    <xsd:annotation>
      <xsd:documentation>

        The adminobjectType specifies information about an
        administered object.  Administered objects are specific to a
        messaging style or message provider.  This contains
        information on the Java type of the interface implemented by
        an administered object, its Java class name and its
        configuration properties.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="adminobject-interface"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element adminobject-interface specifies the
            fully qualified name of the Java type of the
            interface implemented by an administered object.
            
            Example:
                <adminobject-interface>javax.jms.Destination
                </adminobject-interface>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="adminobject-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element adminobject-class specifies the fully
            qualified Java class name of an administered object.
            
            Example:
                  <adminobject-class>com.wombat.DestinationImpl
                  </adminobject-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="authentication-mechanismType">
    <xsd:annotation>
      <xsd:documentation>

        The authentication-mechanismType specifies an authentication
        mechanism supported by the resource adapter. Note that this
        support is for the resource adapter and not for the
        underlying EIS instance. The optional description specifies
        any resource adapter specific requirement for the support of
        security contract and authentication mechanism.
        
        Note that BasicPassword mechanism type should support the
        javax.resource.spi.security.PasswordCredential interface.
        The Kerbv5 mechanism type should support the
        org.ietf.jgss.GSSCredential interface or the deprecated
        javax.resource.spi.security.GenericCredential interface.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="authentication-mechanism-type"
                   type="javaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element authentication-mechanism-type specifies
            type of an authentication mechanism.
            
            The example values are:
            
            <authentication-mechanism-type>BasicPassword
            </authentication-mechanism-type>
            
            <authentication-mechanism-type>Kerbv5
            </authentication-mechanism-type>
            
            Any additional security mechanisms are outside the
            scope of the Connector architecture specification.
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="credential-interface"
                   type="javaee:credential-interfaceType"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="config-property-nameType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[[
        The config-property-nameType contains the name of a
        configuration property.
        
        The connector architecture defines a set of well-defined
        properties all of type java.lang.String. These are as
        follows.
        
        ServerName
        PortNumber
        UserName
        Password
        ConnectionURL
        
        A resource adapter provider can extend this property set to
        include properties specific to the resource adapter and its
        underlying EIS.
        
        Possible values include
              ServerName
              PortNumber
              UserName
              Password
              ConnectionURL
        
        Example: <config-property-name>ServerName</config-property-name>
        
        ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdStringType"/>
    </xsd:simpleContent>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="config-property-typeType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[[
        The config-property-typeType contains the fully
        qualified Java type of a configuration property.
        
        The following are the legal values:
        java.lang.Boolean, java.lang.String, java.lang.Integer,
        java.lang.Double, java.lang.Byte, java.lang.Short,
        java.lang.Long, java.lang.Float, java.lang.Character
        
        Used in: config-property
        
        Example:
        <config-property-type>java.lang.String</config-property-type>
        
        ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string">
        <xsd:enumeration value="java.lang.Boolean"/>
        <xsd:enumeration value="java.lang.String"/>
        <xsd:enumeration value="java.lang.Integer"/>
        <xsd:enumeration value="java.lang.Double"/>
        <xsd:enumeration value="java.lang.Byte"/>
        <xsd:enumeration value="java.lang.Short"/>
        <xsd:enumeration value="java.lang.Long"/>
        <xsd:enumeration value="java.lang.Float"/>
        <xsd:enumeration value="java.lang.Character"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="config-propertyType">
    <xsd:annotation>
      <xsd:documentation>

        The config-propertyType contains a declaration of a single
        configuration property that may be used for providing
        configuration information.
        
        The declaration consists of an optional description, name,
        type and an optional value of the configuration property. If
        the resource adapter provider does not specify a value than
        the deployer is responsible for providing a valid value for
        a configuration property.
        
        Any bounds or well-defined values of properties should be
        described in the description element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="config-property-name"
                   type="javaee:config-property-nameType"/>
      <xsd:element name="config-property-type"
                   type="javaee:config-property-typeType"/>
      <xsd:element name="config-property-value"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element config-property-value contains the value
            of a configuration entry. Note, it is possible for a
            resource adapter deployer to override this
            configuration information during deployment.
            
            Example:
            <config-property-value>WombatServer</config-property-value>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property-ignore"
                   type="javaee:true-falseType"
                   minOccurs="0"
                   maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>

            The element config-property-ignore is used to specify 
            whether the configuration tools must ignore considering the 
            configuration property during auto-discovery of
            Configuration properties. See the Connector specification for
            more details. If unspecified, the container must not ignore
            the configuration property during auto-discovery.
            This element must be one of the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property-supports-dynamic-updates"
                   type="javaee:true-falseType"
                   minOccurs="0"
                   maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>

            The element config-property-supports-dynamic-updates is used to specify 
            whether the configuration property allows its value to be updated, by
            application server's configuration tools, during the lifetime of
            the JavaBean instance. See the Connector specification for
            more details. If unspecified, the container must not dynamically
            reconfigure the property.
            This element must be one of the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property-confidential"
                   type="javaee:true-falseType"
                   minOccurs="0"
                   maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>

            The element config-property-confidential is used to specify 
            whether the configuration property is confidential and
            recommends application server's configuration tools to use special 
            visual aids for editing them. See the Connector specification for
            more details. If unspecified, the container must not treat the
            property as confidential.
            This element must be one of the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="connection-definitionType">
    <xsd:annotation>
      <xsd:documentation>

        The connection-definitionType defines a set of connection
        interfaces and classes pertaining to a particular connection
        type. This also includes configurable properties for
        ManagedConnectionFactory instances that may be produced out
        of this set.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="managedconnectionfactory-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element managedconnectionfactory-class specifies
            the fully qualified name of the Java class that
            implements the
            javax.resource.spi.ManagedConnectionFactory interface.
            This Java class is provided as part of resource
            adapter's implementation of connector architecture
            specified contracts. The implementation of this
            class is required to be a JavaBean.
            
            Example:
            <managedconnectionfactory-class>
                  com.wombat.ManagedConnectionFactoryImpl
            </managedconnectionfactory-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="connectionfactory-interface"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element connectionfactory-interface specifies
            the fully qualified name of the ConnectionFactory
            interface supported by the resource adapter.
            
            Example:
            <connectionfactory-interface>com.wombat.ConnectionFactory
            </connectionfactory-interface>
            
            OR
            
            <connectionfactory-interface>javax.resource.cci.ConnectionFactory
            </connectionfactory-interface>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="connectionfactory-impl-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element connectionfactory-impl-class specifies
            the fully qualified name of the ConnectionFactory
            class that implements resource adapter
            specific ConnectionFactory interface.
            
            Example:
            
            <connectionfactory-impl-class>com.wombat.ConnectionFactoryImpl
            </connectionfactory-impl-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="connection-interface"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The connection-interface element specifies the fully
            qualified name of the Connection interface supported
            by the resource adapter.
            
            Example:
            
                  <connection-interface>javax.resource.cci.Connection
                  </connection-interface>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="connection-impl-class"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The connection-impl-classType specifies the fully
            qualified name of the Connection class that
            implements resource adapter specific Connection
            interface.  It is used by the connection-impl-class
            elements.
            
            Example:
            
                  <connection-impl-class>com.wombat.ConnectionImpl
                  </connection-impl-class>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="connectorType">
    <xsd:annotation>
      <xsd:documentation>

        The connectorType defines a resource adapter.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="module-name"
                   type="javaee:string"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element module-name specifies the name of the
            resource adapter.
            
            If there is no module-name specified, the module-name
            is determined as defined in Section EE.8.1.1 and EE.8.1.2 
            of the Java Platform, Enterprise Edition (Java EE) 
            Specification, version 6.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="javaee:descriptionGroup"/>
      <xsd:element name="vendor-name"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element vendor-name specifies the name of
            resource adapter provider vendor.
            
            If there is no vendor-name specified, the application 
            server must consider the default "" (empty string) as
            the name of the resource adapter provider vendor.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="eis-type"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element eis-type contains information about the
            type of the EIS. For example, the type of an EIS can
            be product name of EIS independent of any version
            info.
            
            This helps in identifying EIS instances that can be
            used with this resource adapter.
            
            If there is no eis-type specified, the application 
            server must consider the default "" (empty string) as
            the type of the EIS.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="resourceadapter-version"
                   type="javaee:xsdStringType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element resourceadapter-version specifies a string-based version
            of the resource adapter from the resource adapter
            provider.
            
            If there is no resourceadapter-version specified, the application 
            server must consider the default "" (empty string) as
            the version of the resource adapter.
                
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="license"
                   type="javaee:licenseType"
                   minOccurs="0"/>
      <xsd:element name="resourceadapter"
                   type="javaee:resourceadapterType"/>
      <xsd:element name="required-work-context"
                   type="javaee:fully-qualified-classType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>

            The element required-work-context specifies a fully qualified class 
            name that implements WorkContext interface, that the resource adapter 
            requires the application server to support.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="version"
                   type="javaee:dewey-versionType"
                   fixed="1.6"
                   use="required">
      <xsd:annotation>
        <xsd:documentation>

          The version indicates the version of the schema to be used by the
          deployment tool. This element doesn't have a default, and the resource adapter 
          developer/deployer is required to specify it. The element allows the deployment 
          tool to choose which schema to validate the descriptor against.
              
          
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="metadata-complete"
                   type="xsd:boolean">
      <xsd:annotation>
        <xsd:documentation>

          The metadata-complete attribute defines whether the deployment 
          descriptor for the resource adapter module is complete, or whether
          the class files available to the module and packaged with the resource 
          adapter should be examined for annotations that specify deployment 
          information.
          
          If metadata-complete is set to "true", the deployment tool of the 
          application server must ignore any annotations that specify deployment 
          information, which might be present in the class files of the 
          application.If metadata-complete is not specified or is set to "false", 
          the deployment tool must examine the class files of the application for 
          annotations, as specified by this specification. If the 
          deployment descriptor is not included or is included but not marked 
          metadata-complete, the deployment tool will process annotations.
          
          Application servers must assume that metadata-complete is true for 
          resource adapter modules with deployment descriptor version 
          lower than 1.6.
                
        </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="credential-interfaceType">
    <xsd:annotation>
      <xsd:documentation>

        The credential-interfaceType specifies the
        interface that the resource adapter implementation
        supports for the representation of the
        credentials. This element(s) that use this type,
        i.e. credential-interface,  should be used by
        application server to find out the Credential
        interface it should use as part of the security
        contract.
        
        The possible values are:
        
        javax.resource.spi.security.PasswordCredential
        org.ietf.jgss.GSSCredential
        javax.resource.spi.security.GenericCredential
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:fully-qualified-classType">
        <xsd:enumeration value="javax.resource.spi.security.PasswordCredential"/>
        <xsd:enumeration value="org.ietf.jgss.GSSCredential"/>
        <xsd:enumeration value="javax.resource.spi.security.GenericCredential"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="inbound-resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The inbound-resourceadapterType specifies information
        about an inbound resource adapter. This contains information
        specific to the implementation of the resource adapter
        library as specified through the messageadapter element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="messageadapter"
                   type="javaee:messageadapterType"
                   minOccurs="0">
        <xsd:unique name="messagelistener-type-uniqueness">
          <xsd:annotation>
            <xsd:documentation>

              The messagelistener-type element content must be
              unique in the messageadapter. Several messagelisteners
              can not use the same messagelistener-type.
              
            </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:messagelistener"/>
          <xsd:field xpath="javaee:messagelistener-type"/>
        </xsd:unique>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="licenseType">
    <xsd:annotation>
      <xsd:documentation>

        The licenseType specifies licensing requirements for the
        resource adapter module. This type specifies whether a
        license is required to deploy and use this resource adapter,
        and an optional description of the licensing terms
        (examples: duration of license, number of connection
        restrictions). It is used by the license element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="license-required"
                   type="javaee:true-falseType">
        <xsd:annotation>
          <xsd:documentation>

            The element license-required specifies whether a
            license is required to deploy and use the
            resource adapter. This element must be one of
            the following, "true" or "false".
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="messageadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The messageadapterType specifies information about the
        messaging capabilities of the resource adapter. This
        contains information specific to the implementation of the
        resource adapter library as specified through the
        messagelistener element.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="messagelistener"
                   type="javaee:messagelistenerType"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="messagelistenerType">
    <xsd:annotation>
      <xsd:documentation>

        The messagelistenerType specifies information about a
        specific message listener supported by the messaging
        resource adapter. It contains information on the Java type
        of the message listener interface and an activation
        specification.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="messagelistener-type"
                   type="javaee:fully-qualified-classType">
        <xsd:annotation>
          <xsd:documentation>
            <![CDATA[[
            The element messagelistener-type specifies the fully
            qualified name of the Java type of a message
            listener interface.
            
            Example:
            
                <messagelistener-type>javax.jms.MessageListener
                </messagelistener-type>
            
            ]]>
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="activationspec"
                   type="javaee:activationspecType"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="outbound-resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The outbound-resourceadapterType specifies information about
        an outbound resource adapter. The information includes fully
        qualified names of classes/interfaces required as part of
        the connector architecture specified contracts for
        connection management, level of transaction support
        provided, one or more authentication mechanisms supported
        and additional required security permissions.
        
        If any of the outbound resource adapter elements (transaction-support,
        authentication-mechanism, reauthentication-support) is specified through
        this element or metadata annotations, and no  connection-definition is 
        specified as part of this element or through annotations, the 
        application server must consider this an error and fail deployment. 
        
        If there is no authentication-mechanism specified as part of
        this element or metadata annotations, then the resource adapter does 
        not support any standard security authentication mechanisms as 
        part of security contract. The application server ignores the security 
        part of the system contracts in this case.
        
        If there is no transaction-support specified as part of this element 
        or metadata annotation, then the application server must consider that 
        the resource adapter does not support either the resource manager local 
        or JTA transactions and must consider the transaction support as 
        NoTransaction. Note that resource adapters may specify the level of 
        transaction support to be used at runtime for a ManagedConnectionFactory 
        through the TransactionSupport interface.
        
        If there is no reauthentication-support specified as part of
        this element or metadata annotation, then the application server must consider 
        that the resource adapter does not support re-authentication of 
        ManagedConnections.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="connection-definition"
                   type="javaee:connection-definitionType"
                   maxOccurs="unbounded"
                   minOccurs="0"/>
      <xsd:element name="transaction-support"
                   type="javaee:transaction-supportType"
                   minOccurs="0"/>
      <xsd:element name="authentication-mechanism"
                   type="javaee:authentication-mechanismType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="reauthentication-support"
                   type="javaee:true-falseType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

                    The element reauthentication-support specifies
                    whether the resource adapter implementation supports
                    re-authentication of existing Managed- Connection
                    instance. Note that this information is for the
                    resource adapter implementation and not for the
                    underlying EIS instance. This element must have
                    either a "true" or "false" value.
            
                  
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="required-config-propertyType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[[
        The required-config-propertyType contains a declaration
        of a single configuration property used for specifying a
        required configuration property name. It is used
        by required-config-property elements.
        
        Usage of this type is deprecated from Connectors 1.6 specification. 
        Refer to required-config-property element for more information.
        
        Example:
        
        <required-config-property>
        <config-property-name>Destination</config-property-name>
        </required-config-property>
        
        ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="config-property-name"
                   type="javaee:config-property-nameType"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

        The resourceadapterType specifies information about the
        resource adapter. The information includes fully qualified
        resource adapter Java class name, configuration properties,
        information specific to the implementation of the resource
        adapter library as specified through the
        outbound-resourceadapter and inbound-resourceadapter
        elements, and an optional set of administered objects.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="resourceadapter-class"
                   type="javaee:fully-qualified-classType"
                   minOccurs="0">
        <xsd:annotation>
          <xsd:documentation>

            The element resourceadapter-class specifies the
            fully qualified name of a Java class that implements
            the javax.resource.spi.ResourceAdapter
            interface. This Java class is provided as part of
            resource adapter's implementation of connector
            architecture specified contracts. The implementation
            of this class is required to be a JavaBean.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
                   type="javaee:config-propertyType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="outbound-resourceadapter"
                   type="javaee:outbound-resourceadapterType"
                   minOccurs="0">
        <xsd:unique name="connectionfactory-interface-uniqueness">
          <xsd:annotation>
            <xsd:documentation>

              The connectionfactory-interface element content
              must be unique in the outbound-resourceadapter.
              Multiple connection-definitions can not use the
              same connectionfactory-type.
              
            </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:connection-definition"/>
          <xsd:field xpath="javaee:connectionfactory-interface"/>
        </xsd:unique>
      </xsd:element>
      <xsd:element name="inbound-resourceadapter"
                   type="javaee:inbound-resourceadapterType"
                   minOccurs="0"/>
      <xsd:element name="adminobject"
                   type="javaee:adminobjectType"
                   minOccurs="0"
                   maxOccurs="unbounded">
        <xsd:unique name="adminobject-type-uniqueness">
          <xsd:annotation>
            <xsd:documentation>

              The adminobject-interface and adminobject-class element content must be
              unique in the resourceadapterType. Several admin objects
              can not use the same adminobject-interface and adminobject-class.
              
            </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:adminobject"/>
          <xsd:field xpath="javaee:adminobject-interface"/>
          <xsd:field xpath="javaee:adminobject-class"/>
        </xsd:unique>
      </xsd:element>
      <xsd:element name="security-permission"
                   type="javaee:security-permissionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="security-permissionType">
    <xsd:annotation>
      <xsd:documentation>

        The security-permissionType specifies a security
        permission that is required by the resource adapter code.
        
        The security permission listed in the deployment descriptor
        are ones that are different from those required by the
        default permission set as specified in the connector
        specification. The optional description can mention specific
        reason that resource adapter requires a given security
        permission.
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
                   type="javaee:descriptionType"
                   minOccurs="0"
                   maxOccurs="unbounded"/>
      <xsd:element name="security-permission-spec"
                   type="javaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>

            The element security-permission-spec specifies a security
            permission based on the Security policy file
            syntax. Refer to the following URL for Sun's
            implementation of the security permission
            specification:
            
            http://java.sun.com/javase/6/docs/technotes/guides/security/PolicyFiles.html
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id"
                   type="xsd:ID"/>
  </xsd:complexType>


<!-- **************************************************** -->

  <xsd:complexType name="transaction-supportType">
    <xsd:annotation>
      <xsd:documentation>

        The transaction-supportType specifies the level of
        transaction support provided by the resource adapter. It is
        used by transaction-support elements.
        
        The value must be one of the following:
        
        NoTransaction
        LocalTransaction
        XATransaction
        
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string">
        <xsd:enumeration value="NoTransaction"/>
        <xsd:enumeration value="LocalTransaction"/>
        <xsd:enumeration value="XATransaction"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>

</xsd:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://java.sun.com/xml/ns/j2ee"
        xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        version="1.5">
  <xsd:annotation>
    <xsd:documentation>
      @(#)connector_1_5.xsds    1.27 06/17/03
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

      Copyright 2003-2007 Sun Microsystems, Inc. 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://glassfish.dev.java.net/public/CDDL+GPL.html or
      glassfish/bootstrap/legal/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
      glassfish/bootstrap/legal/LICENSE.txt.  Sun designates this
      particular file as subject to the "Classpath" exception as
      provided by Sun in the GPL Version 2 section of the License file
      that accompanied this code.  If applicable, add the following
      below the License Header, with the fields enclosed by brackets []
      replaced by your own identifying information:
      "Portions Copyrighted [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.

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

  <xsd:annotation>
    <xsd:documentation>
      <![CDATA[

    This is the XML Schema for the Connector 1.5 deployment
    descriptor.  The deployment descriptor must be named
    "META-INF/ra.xml" in the connector's rar file.  All Connector
    deployment descriptors must indicate the connector resource
    adapter schema by using the J2EE namespace:

    http://java.sun.com/xml/ns/j2ee

    and by indicating the version of the schema by
    using the version element as shown below:

        <connector xmlns="http://java.sun.com/xml/ns/j2ee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
          version="1.5">
          ...
        </connector>

    The instance documents may indicate the published version of
    the schema using the xsi:schemaLocation attribute for J2EE
    namespace with the following location:

    http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd

    ]]>
    </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation>

      The following conventions apply to all J2EE
      deployment descriptor elements unless indicated otherwise.

      - In elements that specify a pathname to a file within the
    same JAR file, relative filenames (i.e., those not
    starting with "/") are considered relative to the root of
    the JAR file's namespace.  Absolute filenames (i.e., those
    starting with "/") also specify names in the root of the
    JAR file's namespace.  In general, relative names are
    preferred.  The exception is .war files where absolute
    names are preferred for consistency with the Servlet API.

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

  <xsd:include schemaLocation="j2ee_1_4.xsd"/>


<!-- **************************************************** -->


  <xsd:element name="connector" type="j2ee:connectorType">
    <xsd:annotation>
      <xsd:documentation>

    The connector element is the root element of the deployment
    descriptor for the resource adapter. This element includes
    general information - vendor name, resource adapter version,
    icon - about the resource adapter module. It also includes
    information specific to the implementation of the resource
    adapter library as specified through the element
    resourceadapter.

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

  </xsd:element>

<!-- **************************************************** -->

  <xsd:complexType name="activationspecType">
    <xsd:annotation>
      <xsd:documentation>

    The activationspecType specifies an activation
    specification.  The information includes fully qualified
    Java class name of an activation specification and a set of
    required configuration property names.

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

    <xsd:sequence>
      <xsd:element name="activationspec-class"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element activationspec-class specifies the fully
          qualified Java class name of the activation
          specification class. This class must implement the
          javax.resource.spi.ActivationSpec interface. The
          implementation of this class is required to be a
          JavaBean.

          Example:
          <activationspec-class>com.wombat.ActivationSpecImpl
          </activationspec-class>

          ]]>
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
      <xsd:element name="required-config-property"
           type="j2ee:required-config-propertyType"
           minOccurs="0"
           maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="adminobjectType">
    <xsd:annotation>
      <xsd:documentation>

    The adminobjectType specifies information about an
    administered object.  Administered objects are specific to a
    messaging style or message provider.  This contains
    information on the Java type of the interface implemented by
    an administered object, its Java class name and its
    configuration properties.

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

    <xsd:sequence>
      <xsd:element name="adminobject-interface"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element adminobject-interface specifies the
          fully qualified name of the Java type of the
          interface implemented by an administered object.

          Example:
        <adminobject-interface>javax.jms.Destination
        </adminobject-interface>

          ]]>
      </xsd:documentation>
    </xsd:annotation>

      </xsd:element>
      <xsd:element name="adminobject-class"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element adminobject-class specifies the fully
          qualified Java class name of an administered object.

          Example:
          <adminobject-class>com.wombat.DestinationImpl
          </adminobject-class>

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

      <xsd:element name="config-property"
           type="j2ee:config-propertyType"
           minOccurs="0"
           maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="authentication-mechanismType">
    <xsd:annotation>
      <xsd:documentation>

    The authentication-mechanismType specifies an authentication
    mechanism supported by the resource adapter. Note that this
    support is for the resource adapter and not for the
    underlying EIS instance. The optional description specifies
    any resource adapter specific requirement for the support of
    security contract and authentication mechanism.

    Note that BasicPassword mechanism type should support the
    javax.resource.spi.security.PasswordCredential interface.
    The Kerbv5 mechanism type should support the
    org.ietf.jgss.GSSCredential interface or the deprecated
    javax.resource.spi.security.GenericCredential interface.

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

    <xsd:sequence>
      <xsd:element name="description"
           type="j2ee:descriptionType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="authentication-mechanism-type"
           type="j2ee:xsdStringType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element authentication-mechanism-type specifies
          type of an authentication mechanism.

          The example values are:

          <authentication-mechanism-type>BasicPassword
          </authentication-mechanism-type>

          <authentication-mechanism-type>Kerbv5
          </authentication-mechanism-type>

          Any additional security mechanisms are outside the
          scope of the Connector architecture specification.

          ]]>
      </xsd:documentation>
    </xsd:annotation>

      </xsd:element>
      <xsd:element name="credential-interface"
           type="j2ee:credential-interfaceType"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="config-property-nameType">
    <xsd:annotation>
      <xsd:documentation>
    <![CDATA[

      The config-property-nameType contains the name of a
      configuration property.

      The connector architecture defines a set of well-defined
      properties all of type java.lang.String. These are as
      follows.

           ServerName
           PortNumber
           UserName
           Password
           ConnectionURL

      A resource adapter provider can extend this property set to
      include properties specific to the resource adapter and its
      underlying EIS.

      Possible values include
          ServerName
          PortNumber
          UserName
          Password
          ConnectionURL

      Example: <config-property-name>ServerName</config-property-name>

      ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="j2ee:xsdStringType"/>
    </xsd:simpleContent>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="config-property-typeType">
    <xsd:annotation>
      <xsd:documentation>
    <![CDATA[

      The config-property-typeType contains the fully
      qualified Java type of a configuration property.

      The following are the legal values:
         java.lang.Boolean, java.lang.String, java.lang.Integer,
         java.lang.Double, java.lang.Byte, java.lang.Short,
         java.lang.Long, java.lang.Float, java.lang.Character

      Used in: config-property

      Example:
      <config-property-type>java.lang.String</config-property-type>

      ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="j2ee:string">
    <xsd:enumeration value="java.lang.Boolean"/>
    <xsd:enumeration value="java.lang.String"/>
    <xsd:enumeration value="java.lang.Integer"/>
    <xsd:enumeration value="java.lang.Double"/>
    <xsd:enumeration value="java.lang.Byte"/>
    <xsd:enumeration value="java.lang.Short"/>
    <xsd:enumeration value="java.lang.Long"/>
    <xsd:enumeration value="java.lang.Float"/>
    <xsd:enumeration value="java.lang.Character"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="config-propertyType">
    <xsd:annotation>
      <xsd:documentation>

    The config-propertyType contains a declaration of a single
    configuration property that may be used for providing
    configuration information.

    The declaration consists of an optional description, name,
    type and an optional value of the configuration property. If
    the resource adapter provider does not specify a value than
    the deployer is responsible for providing a valid value for
    a configuration property.

    Any bounds or well-defined values of properties should be
    described in the description element.

      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description"
           type="j2ee:descriptionType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="config-property-name"
           type="j2ee:config-property-nameType"/>
      <xsd:element name="config-property-type"
           type="j2ee:config-property-typeType"/>
      <xsd:element name="config-property-value"
           type="j2ee:xsdStringType"
           minOccurs="0">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element config-property-value contains the value
          of a configuration entry. Note, it is possible for a
          resource adapter deployer to override this
          configuration information during deployment.

          Example:
          <config-property-value>WombatServer</config-property-value>

          ]]>
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="connection-definitionType">
    <xsd:annotation>
      <xsd:documentation>

    The connection-definitionType defines a set of connection
    interfaces and classes pertaining to a particular connection
    type. This also includes configurable properties for
    ManagedConnectionFactory instances that may be produced out
    of this set.

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

    <xsd:sequence>
      <xsd:element name="managedconnectionfactory-class"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element managedconnectionfactory-class specifies
          the fully qualified name of the Java class that
          implements the
          javax.resource.spi.ManagedConnectionFactory interface.
          This Java class is provided as part of resource
          adapter's implementation of connector architecture
          specified contracts. The implementation of this
          class is required to be a JavaBean.

          Example:
          <managedconnectionfactory-class>
          com.wombat.ManagedConnectionFactoryImpl
          </managedconnectionfactory-class>

          ]]>
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
      <xsd:element name="config-property"
           type="j2ee:config-propertyType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="connectionfactory-interface"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element connectionfactory-interface specifies
          the fully qualified name of the ConnectionFactory
          interface supported by the resource adapter.

          Example:
          <connectionfactory-interface>com.wombat.ConnectionFactory
          </connectionfactory-interface>

          OR

          <connectionfactory-interface>javax.resource.cci.ConnectionFactory
          </connectionfactory-interface>

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

      <xsd:element name="connectionfactory-impl-class"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element connectionfactory-impl-class specifies
          the fully qualified name of the ConnectionFactory
          class that implements resource adapter
          specific ConnectionFactory interface.

          Example:

          <connectionfactory-impl-class>com.wombat.ConnectionFactoryImpl
          </connectionfactory-impl-class>

          ]]>
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
      <xsd:element name="connection-interface"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The connection-interface element specifies the fully
          qualified name of the Connection interface supported
          by the resource adapter.

          Example:

          <connection-interface>javax.resource.cci.Connection
          </connection-interface>

          ]]>
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
      <xsd:element name="connection-impl-class"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The connection-impl-classType specifies the fully
          qualified name of the Connection class that
          implements resource adapter specific Connection
          interface.  It is used by the connection-impl-class
          elements.

          Example:

          <connection-impl-class>com.wombat.ConnectionImpl
          </connection-impl-class>

          ]]>
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="connectorType">
    <xsd:annotation>
      <xsd:documentation>

    The connectorType defines a resource adapter.

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

    <xsd:sequence>
      <xsd:group ref="j2ee:descriptionGroup"/>
      <xsd:element name="vendor-name"
           type="j2ee:xsdStringType">
    <xsd:annotation>
      <xsd:documentation>

        The element vendor-name specifies the name of
        resource adapter provider vendor.

      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
      <xsd:element name="eis-type"
           type="j2ee:xsdStringType">
    <xsd:annotation>
      <xsd:documentation>

        The element eis-type contains information about the
        type of the EIS. For example, the type of an EIS can
        be product name of EIS independent of any version
        info.

        This helps in identifying EIS instances that can be
        used with this resource adapter.

      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
      <xsd:element name="resourceadapter-version"
           type="j2ee:xsdStringType">
    <xsd:annotation>
      <xsd:documentation>

        The element resourceadapter-version specifies a string-based version
        of the resource adapter from the resource adapter
        provider.

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

      </xsd:element>
      <xsd:element name="license"
           type="j2ee:licenseType"
           minOccurs="0"/>
      <xsd:element name="resourceadapter"
           type="j2ee:resourceadapterType"/>

    </xsd:sequence>
    <xsd:attribute name="version"
           type="j2ee:dewey-versionType"
           fixed="1.5"
           use="required">
      <xsd:annotation>
    <xsd:documentation>

      The version specifies the version of the
      connector architecture specification that is
      supported by this resource adapter. This information
      enables deployer to configure the resource adapter to
      support deployment and runtime requirements of the
      corresponding connector architecture specification.

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

<!-- **************************************************** -->

  <xsd:complexType name="credential-interfaceType">
    <xsd:annotation>
      <xsd:documentation>

    The credential-interfaceType specifies the
    interface that the resource adapter implementation
    supports for the representation of the
    credentials. This element(s) that use this type,
    i.e. credential-interface,  should be used by
    application server to find out the Credential
    interface it should use as part of the security
    contract.

    The possible values are:

    javax.resource.spi.security.PasswordCredential
    org.ietf.jgss.GSSCredential
    javax.resource.spi.security.GenericCredential

      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="j2ee:fully-qualified-classType">
    <xsd:enumeration
         value="javax.resource.spi.security.PasswordCredential"/>
    <xsd:enumeration
         value="org.ietf.jgss.GSSCredential"/>
    <xsd:enumeration
         value="javax.resource.spi.security.GenericCredential"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="inbound-resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

    The inbound-resourceadapterType specifies information
    about an inbound resource adapter. This contains information
    specific to the implementation of the resource adapter
    library as specified through the messageadapter element.

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

    <xsd:sequence>
      <xsd:element name="messageadapter"
           type="j2ee:messageadapterType"
           minOccurs="0">
    <xsd:unique name="messagelistener-type-uniqueness">
      <xsd:annotation>
        <xsd:documentation>

          The messagelistener-type element content must be
          unique in the messageadapter. Several messagelisteners
          can not use the same messagelistener-type.

        </xsd:documentation>
      </xsd:annotation>
      <xsd:selector xpath="j2ee:messagelistener"/>
      <xsd:field    xpath="j2ee:messagelistener-type"/>
    </xsd:unique>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="licenseType">
    <xsd:annotation>
      <xsd:documentation>

    The licenseType specifies licensing requirements for the
    resource adapter module. This type specifies whether a
    license is required to deploy and use this resource adapter,
    and an optional description of the licensing terms
    (examples: duration of license, number of connection
    restrictions). It is used by the license element.

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

    <xsd:sequence>
      <xsd:element name="description"
           type="j2ee:descriptionType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="license-required"
           type="j2ee:true-falseType">
    <xsd:annotation>
      <xsd:documentation>

        The element license-required specifies whether a
        license is required to deploy and use the
        resource adapter. This element must be one of
        the following, "true" or "false".

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

<!-- **************************************************** -->

  <xsd:complexType name="messageadapterType">
    <xsd:annotation>
      <xsd:documentation>

    The messageadapterType specifies information about the
    messaging capabilities of the resource adapter. This
    contains information specific to the implementation of the
    resource adapter library as specified through the
    messagelistener element.

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

    <xsd:sequence>
      <xsd:element name="messagelistener"
           type="j2ee:messagelistenerType"
           maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="messagelistenerType">
    <xsd:annotation>
      <xsd:documentation>

    The messagelistenerType specifies information about a
    specific message listener supported by the messaging
    resource adapter. It contains information on the Java type
    of the message listener interface and an activation
    specification.

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

    <xsd:sequence>
      <xsd:element name="messagelistener-type"
           type="j2ee:fully-qualified-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

          The element messagelistener-type specifies the fully
          qualified name of the Java type of a message
          listener interface.

          Example:

        <messagelistener-type>javax.jms.MessageListener
        </messagelistener-type>

          ]]>
      </xsd:documentation>
    </xsd:annotation>

      </xsd:element>
      <xsd:element name="activationspec"
           type="j2ee:activationspecType"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="outbound-resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

    The outbound-resourceadapterType specifies information about
    an outbound resource adapter. The information includes fully
    qualified names of classes/interfaces required as part of
    the connector architecture specified contracts for
    connection management, level of transaction support
    provided, one or more authentication mechanisms supported
    and additional required security permissions.

    If there is no authentication-mechanism specified as part of
    resource adapter element then the resource adapter does not
    support any standard security authentication mechanisms as
    part of security contract. The application server ignores
    the security part of the system contracts in this case.

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

    <xsd:sequence>
      <xsd:element name="connection-definition"
           type="j2ee:connection-definitionType"
           maxOccurs="unbounded"/>
      <xsd:element name="transaction-support"
           type="j2ee:transaction-supportType"/>
      <xsd:element name="authentication-mechanism"
           type="j2ee:authentication-mechanismType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="reauthentication-support"
           type="j2ee:true-falseType">
    <xsd:annotation>
      <xsd:documentation>

        The element reauthentication-support specifies
        whether the resource adapter implementation supports
        re-authentication of existing Managed- Connection
        instance. Note that this information is for the
        resource adapter implementation and not for the
        underlying EIS instance. This element must have
        either a "true" or "false" value.

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

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

<!-- **************************************************** -->

  <xsd:complexType name="required-config-propertyType">
    <xsd:annotation>
      <xsd:documentation>
    <![CDATA[

      The required-config-propertyType contains a declaration
      of a single configuration property used for specifying a
      required configuration property name. It is used
      by required-config-property elements.

      Example:

      <required-config-property>Destination</required-config-property>

      ]]>
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description"
           type="j2ee:descriptionType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="config-property-name"
           type="j2ee:config-property-nameType"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="resourceadapterType">
    <xsd:annotation>
      <xsd:documentation>

    The resourceadapterType specifies information about the
    resource adapter. The information includes fully qualified
    resource adapter Java class name, configuration properties,
    information specific to the implementation of the resource
    adapter library as specified through the
    outbound-resourceadapter and inbound-resourceadapter
    elements, and an optional set of administered objects.

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

    <xsd:sequence>
      <xsd:element name="resourceadapter-class"
           type="j2ee:fully-qualified-classType"
           minOccurs="0">
    <xsd:annotation>
      <xsd:documentation>

        The element resourceadapter-class specifies the
        fully qualified name of a Java class that implements
        the javax.resource.spi.ResourceAdapter
        interface. This Java class is provided as part of
        resource adapter's implementation of connector
        architecture specified contracts. The implementation
        of this class is required to be a JavaBean.

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

      </xsd:element>
      <xsd:element name="config-property"
           type="j2ee:config-propertyType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="outbound-resourceadapter"
           type="j2ee:outbound-resourceadapterType"
           minOccurs="0">
    <xsd:unique name="connectionfactory-interface-uniqueness">
      <xsd:annotation>
        <xsd:documentation>

          The connectionfactory-interface element content
          must be unique in the outbound-resourceadapter.
          Multiple connection-definitions can not use the
          same connectionfactory-type.

        </xsd:documentation>
      </xsd:annotation>
      <xsd:selector xpath="j2ee:connection-definition"/>
      <xsd:field    xpath="j2ee:connectionfactory-interface"/>
    </xsd:unique>
      </xsd:element>
      <xsd:element name="inbound-resourceadapter"
           type="j2ee:inbound-resourceadapterType"
           minOccurs="0"/>
      <xsd:element name="adminobject"
           type="j2ee:adminobjectType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="security-permission"
           type="j2ee:security-permissionType"
           minOccurs="0"
           maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="security-permissionType">
    <xsd:annotation>
      <xsd:documentation>

    The security-permissionType specifies a security
    permission that is required by the resource adapter code.

    The security permission listed in the deployment descriptor
    are ones that are different from those required by the
    default permission set as specified in the connector
    specification. The optional description can mention specific
    reason that resource adapter requires a given security
    permission.

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

    <xsd:sequence>
      <xsd:element name="description"
           type="j2ee:descriptionType"
           minOccurs="0"
           maxOccurs="unbounded"/>
      <xsd:element name="security-permission-spec"
           type="j2ee:xsdStringType">
    <xsd:annotation>
      <xsd:documentation>

        The element security-permission-spec specifies a security
        permission based on the Security policy file
        syntax. Refer to the following URL for Sun's
        implementation of the security permission
        specification:

        http://java.sun.com/products/jdk/1.4/docs/guide/security/PolicyFiles.html#FileSyntax
      </xsd:documentation>
    </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

<!-- **************************************************** -->

  <xsd:complexType name="transaction-supportType">
    <xsd:annotation>
      <xsd:documentation>

    The transaction-supportType specifies the level of
    transaction support provided by the resource adapter. It is
    used by transaction-support elements.

    The value must be one of the following:

        NoTransaction
        LocalTransaction
        XATransaction

      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="j2ee:string">
    <xsd:enumeration value="NoTransaction"/>
    <xsd:enumeration value="LocalTransaction"/>
    <xsd:enumeration value="XATransaction"/>
      </xsd:restriction>
    </xsd:simpleContent>
  </xsd:complexType>

</xsd:schema>


    


      <!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

Copyright 2000-2007 Sun Microsystems, Inc. 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://glassfish.dev.java.net/public/CDDL+GPL.html
or glassfish/bootstrap/legal/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 glassfish/bootstrap/legal/LICENSE.txt.
Sun designates this particular file as subject to the "Classpath" exception
as provided by Sun in the GPL Version 2 section of the License file that
accompanied this code.  If applicable, add the following below the License
Header, with the fields enclosed by brackets [] replaced by your own
identifying information: "Portions Copyrighted [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.
-->

<!--
This is the XML DTD for the Connector 1.0 deployment descriptor.
All Connector 1.0 deployment descriptors must include a DOCTYPE
of the following form:

  <!DOCTYPE connector PUBLIC
    "-//Sun Microsystems, Inc.//DTD Connector 1.0//EN"
    "http://java.sun.com/dtd/connector_1_0.dtd">

-->

<!--
The following conventions apply to all J2EE deployment descriptor
elements unless indicated otherwise.

- In elements that contain PCDATA, leading and trailing whitespace
  in the data may be ignored.

- In elements whose value is an "enumerated type", the value is
  case sensitive.

- In elements that specify a pathname to a file within the same
  JAR file, relative filenames (i.e., those not starting with "/")
  are considered relative to the root of the JAR file's namespace.
  Absolute filenames (i.e., those starting with "/") also specify
  names in the root of the JAR file's namespace.  In general, relative
  names are preferred.  The exception is .war files where absolute
  names are preferred for consistency with the servlet API.
-->


<!--
The connector element is the root element of the deployment descriptor
for the resource adapter. This element includes general information - vendor
name, version, specification version supported, icon -  about the
resource adapter module. It also includes information specific to the
implementation of the resource adapter library as specified through
the element resourceadapter.
-->
<!ELEMENT connector (display-name?, description?, icon?, vendor-name,
spec-versioneis-typeversionlicense?, resourceadapter)>

<!--
The element authentication-mechanism specifies an authentication mechanism
supported by the resource adapter. Note that this support is for
the resource adapter and not for the underlying EIS instance. The
optional description specifies any resource adapter specific requirement
for the support of security contract and authentication mechanism.

Note that BasicPassword mechanism type should support the
javax.resource.spi.security.PasswordCredential interface.
The Kerbv5 mechanism type should support the
javax.resource.spi.security.GenericCredential interface.

Used in: resourceadapter
-->
<!ELEMENT authentication-mechanism (
description?, authentication-mechanism-typecredential-interface)>

<!--
The element authentication-mechanism-type specifies type of an authentication
mechanism.

The example values are:
   <authentication-mechanism-type>BasicPassword
                   </authentication-mechanism-type>
   <authentication-mechanism-type>Kerbv5
                   </authentication-mechanism-type>

Any additional security mechanisms are outside the scope of the
Connector architecture specification.

Used in: authentication-mechanism
-->
<!ELEMENT authentication-mechanism-type (#PCDATA)>

<!--
The element config-property contains a declaration of a single
configuration property for a ManagedConnectionFactory instance.

Each ManagedConnectionFactory instance creates connections to a
specific EIS instance based on the properties configured on the
ManagedConnectionFactory instance. The configurable properties are
specified only once in the deployment descriptor, even though a
resource adapter can be used to configure multiple ManagedConnnection-
Factory instances (that create connections to different instances of
the same EIS).

The declaration consists of an optional description, name, type
and an optional value of the configuration property. If the resource
adapter provider does not specify a value than the deployer is
responsible for providing a valid value for a configuration property.

Any bounds or well-defined values of properties should be described
in the description element.

Used in: resourceadapter
-->
<!ELEMENT config-property (description?, config-property-name,
config-property-typeconfig-property-value?)>

<!--
The element config-property-name contains the name of a configuration
property.

The connector architecture defines a set of well-defined properties
all of type java.lang.String. These are as follows:
     <config-property-name>ServerName</config-property-name>
     <config-property-name>PortNumber</config-property-name>
     <config-property-name>UserName</config-property-name>
     <config-property-name>Password</config-property-name>
     <config-property-name>ConnectionURL</config-property-name>

A resource adapter provider can extend this property set to include
properties specific to the resource adapter and its underlying EIS.

Used in: config-property

Example: <config-property-name>ServerName</config-property-name>
-->
<!ELEMENT config-property-name (#PCDATA)>

<!--
The element config-property-type contains the fully qualified Java
type of a configuration property as required by ManagedConnection-
Factory instance.

The following are the legal values of config-property-type:
   java.lang.Boolean, java.lang.String, java.lang.Integer,
   java.lang.Double, java.lang.Byte, java.lang.Short,
   java.lang.Long, java.lang.Float, java.lang.Character

Used in: config-property

Example: <config-property-type>java.lang.String</config-property-type>
-->
<!ELEMENT config-property-type (#PCDATA)>

<!--
The element config-property-value contains the value of a configuration
entry.

Used in: config-property

Example: <config-property-value>WombatServer</config-property-value>
-->
<!ELEMENT config-property-value (#PCDATA)>

<!--
The element connection-impl-class specifies the fully-qualified
name of the Connection class that implements resource adapter
specific Connection interface.

Used in: resourceadapter

Example: <connection-impl-class>com.wombat.ConnectionImpl
         </connection-impl-class>
-->
<!ELEMENT connection-impl-class (#PCDATA)>

<!--
The element connection-interface specifies the fully-qualified
name of the Connection interface supported by the resource
adapter.

Used in: resourceadapter

Example: <connection-interface>javax.resource.cci.Connection
         </connection-interface>
-->
<!ELEMENT connection-interface (#PCDATA)>

<!--
The element connectionfactory-impl-class specifies the fully-qualified
name of the ConnectionFactory class that implements resource adapter
specific ConnectionFactory interface.

Used in: resourceadapter

Example: <connectionfactory-impl-class>com.wombat.ConnectionFactoryImpl
         </connectionfactory-impl-class>
-->
<!ELEMENT connectionfactory-impl-class (#PCDATA)>

<!--
The element connectionfactory-interface specifies the fully-qualified
name of the ConnectionFactory interface supported by the resource
adapter.

Used in: resourceadapter

Example: <connectionfactory-interface>com.wombat.ConnectionFactory
         </connectionfactory-interface>
OR
<connectionfactory-interface>javax.resource.cci.ConnectionFactory
         </connectionfactory-interface>
-->
<!ELEMENT connectionfactory-interface (#PCDATA)>

<!--
The element credential-interface specifies the interface that the
resource adapter implementation supports for the representation
of the credentials. This element should be used by application server
to find out the Credential interface it should use as part of the
security contract.

The possible values are:
   <credential-interface>javax.resource.spi.security.PasswordCredential
        </credential-interface>
   <credential-interface>javax.resource.spi.security.GenericCredential
        </credential-interface>

Used in: authentication-mechanism
-->
<!ELEMENT credential-interface (#PCDATA)>

<!--
The description element is used to provide text describing the parent
element.  The description element should include any information that
the resource adapter rar file producer wants to provide to the consumer of
the resource adapter rar file (i.e., to the Deployer). Typically, the tools
used by the resource adapter rar file consumer will display the description
when processing the parent element that contains the description.

Used in: authentication-mechanism, config-property, connector, license,
security-permission
-->
<!ELEMENT description (#PCDATA)>

<!--
The display-name element contains a short name that is intended to be
displayed by tools.  The display name need not be unique.

Used in: connector

Example:

<display-name>Employee Self Service</display-name>
-->
<!ELEMENT display-name (#PCDATA)>

<!--
The element eis-type contains information about the type of the
EIS. For example, the type of an EIS can be product name of EIS
independent of any version info.

This helps in identifying EIS instances that can be used with
this resource adapter.

Used in: connector
-->
<!ELEMENT eis-type (#PCDATA)>

<!--
The icon element contains small-icon and large-icon elements that
specify the file names for small and a large GIF or JPEG icon images
used to represent the parent element in a GUI tool.

Used in: connector
-->
<!ELEMENT icon (small-icon?, large-icon?)>

<!--
The large-icon element contains the name of a file
containing a large (32 x 32) icon image. The file
name is a relative path within the resource adapter's
rar file.

The image may be either in the JPEG or GIF format.
The icon can be used by tools.

Used in: icon

Example:

<large-icon>employee-service-icon32x32.jpg</large-icon>
-->
<!ELEMENT large-icon (#PCDATA)>

<!--
The element license specifies licensing requirements for the resource
adapter module. This element specifies whether a license is required
to deploy and use this resource adapter, and an optional description
of the licensing terms (examples: duration of license, number of
connection restrictions).

Used in: connector
-->
<!ELEMENT license (description?, license-required)>

<!--
The element license-required specifies whether a license is required
to deploy and use the resource adapter. This element must be one of
the following:

    <license-required>true</license-required>
    <license-required>false</license-required>

Used in: license
-->
<!ELEMENT license-required (#PCDATA)>

<!--
The element managedconnectionfactory-class specifies the fully qualified
name of the Java class that implements the javax.resource.spi.Managed-
ConnectionFactory interface. This Java class is provided as part of
resource adapter's implementation of connector architecture specified
contracts.

Used in: resourceadapter

Example:
  <managedconnectionfactory-class>com.wombat.ManagedConnectionFactoryImpl
  </managedconnectionfactory-class>
-->
<!ELEMENT managedconnectionfactory-class (#PCDATA)>

<!--
The element reauthentication-support specifies whether the resource
adapter implementation supports re-authentication of existing Managed-
Connection instance. Note that this information is for the resource
adapter implementation and not for the underlying EIS instance.

This element must be one of the following:
        <reauthentication-support>true</reauthentication-support>
        <reauthentication-support>false</reauthentication-support>
Used in: resourceadapter
-->
<!ELEMENT reauthentication-support (#PCDATA)>

<!--
The element resourceadapter specifies information about the resource
adapter. The information includes fully-qualified names of
class/interfaces required as part of the connector architecture
specified contracts, level of transaction support provided,
configurable properties for ManagedConnectionFactory instances,
one or more authentication mechanisms supported and additional
required security permissions.

If there is no authentication-mechanism specified as part of
resource adapter element then the resource adapter does not
support any standard security authentication mechanisms as part
of security contract. The application server ignores the security
part of the system contracts in this case.

Used in: connector
-->
<!ELEMENT resourceadapter (
managedconnectionfactory-classconnectionfactory-interface,
connectionfactory-impl-classconnection-interface,
connection-impl-classtransaction-supportconfig-property*,
authentication-mechanism*, reauthentication-supportsecurity-permission*
)>

<!--
The element security permission specifies a security permission that
is required by the resource adapter code.

The security permission listed in the deployment descriptor are ones
that are different from those required by the default permission set
as specified in the connector specification. The optional description
can mention specific reason that resource adapter requires a given
security permission.

Used in: resourceadapter
-->
<!ELEMENT security-permission (description?, security-permission-spec)>

<!--
The element permission-spec specifies a security permission based
on the Security policy file syntax. Refer to the following URL for
Sun's implementation of the security permission specification:

http://java.sun.com/products/jdk/1.3/docs/guide/security/PolicyFiles.html#FileSyntax

Used in: security-permission
-->
<!ELEMENT security-permission-spec (#PCDATA)>

<!--
The small-icon element contains the name of a file
containing a small (16 x 16) icon image. The file
name is a relative path within the resource adapter's
rar file.

The image may be either in the JPEG or GIF format.
The icon can be used by tools.

Used in: icon

Example:

<small-icon>employee-service-icon16x16.jpg</small-icon>
-->
<!ELEMENT small-icon (#PCDATA)>

<!--
The element spec-version specifies the version of the connector
architecture specification that is supported by this resource
adapter. This information enables deployer to configure the resource
adapter to support deployment and runtime requirements of the
corresponding connector architecture specification.

Used in: connector

Example:
  <spec-version>1.0</spec-version>
-->
<!ELEMENT spec-version (#PCDATA)>

<!--
The transaction-support element specifies the level of transaction
support provided by the resource adapter.
The value of transaction-support must be one of the following:
 <transaction-support>NoTransaction</transaction-support>
 <transaction-support>LocalTransaction</transaction-support>
 <transaction-support>XATransaction</transaction-support>

Used in: resourceadapter
-->
<!ELEMENT transaction-support (#PCDATA)>

<!--
The element vendor-name specifies the name of resource adapter provider
vendor.

Used in: connector

Example:
  <vendor-name>Wombat Corp.</vendor-name>
-->
<!ELEMENT vendor-name (#PCDATA)>

<!--
The element version specifies a string-based version of the
resource adapter from the resource adapter provider.

Used in: connector

Example:
  <version>1.0</version>
-->
<!ELEMENT version (#PCDATA)>

<!--
The ID mechanism is to allow tools that produce additional deployment
information (i.e., information beyond the standard deployment
descriptor information) to store the non-standard information in a
separate file, and easily refer from these tool-specific files to the
information in the standard deployment descriptor.

Tools are not allowed to add the non-standard information into the
standard deployment descriptor.
-->

<!ATTLIST authentication-mechanism id ID #IMPLIED>
<!ATTLIST authentication-mechanism-type id ID #IMPLIED>
<!ATTLIST config-property id ID #IMPLIED>
<!ATTLIST config-property-name id ID #IMPLIED>
<!ATTLIST config-property-type id ID #IMPLIED>
<!ATTLIST config-property-value id ID #IMPLIED>
<!ATTLIST connection-impl-class id ID #IMPLIED>
<!ATTLIST connection-interface id ID #IMPLIED>
<!ATTLIST connectionfactory-impl-class id ID #IMPLIED>
<!ATTLIST connectionfactory-interface id ID #IMPLIED>
<!ATTLIST connector id ID #IMPLIED>
<!ATTLIST credential-interface id ID #IMPLIED>
<!ATTLIST description id ID #IMPLIED>
<!ATTLIST display-name id ID #IMPLIED>
<!ATTLIST eis-type id ID #IMPLIED>
<!ATTLIST icon id ID #IMPLIED>
<!ATTLIST large-icon id ID #IMPLIED>
<!ATTLIST license id ID #IMPLIED>
<!ATTLIST license-required id ID #IMPLIED>
<!ATTLIST managedconnectionfactory-class id ID #IMPLIED>
<!ATTLIST reauthentication-support id ID #IMPLIED>
<!ATTLIST resourceadapter id ID #IMPLIED>
<!ATTLIST security-permission id ID #IMPLIED>
<!ATTLIST security-permission-spec id ID #IMPLIED>
<!ATTLIST small-icon id ID #IMPLIED>
<!ATTLIST spec-version id ID #IMPLIED>
<!ATTLIST transaction-support id ID #IMPLIED>
<!ATTLIST vendor-name id ID #IMPLIED>
<!ATTLIST version id ID #IMPLIED>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema"
           version="1.0">

  <xs:complexType name="boolean-presenceType"></xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies an override for a config-property element in ra.xml or a @ConfigProperty
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ironjacamarType">
    <xs:sequence>
      <xs:element name="bean-validation-groups" type="bean-validation-groupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies bean validation group that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bootstrap-context" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the unique name of the bootstrap context that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies resource adapter configuration properties.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-support" type="transaction-supportType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the transaction support level of the resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-definitions" type="connection-definitionsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the connection definitions
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="admin-objects" type="admin-objectsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the administration objects
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="transaction-supportType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define the type of transaction supported by this resource adapter.
          Valid values are: NoTransaction, LocalTransaction, XATransaction
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="NoTransaction" />
      <xs:enumeration value="LocalTransaction" />
      <xs:enumeration value="XATransaction" />
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="common-attribute">
    <xs:attribute name="class-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the the fully qualified class name of a managed connection factory
            or admin object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Should the object in question be activated
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if a java:/ JNDI context should be used 
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:complexType name="admin-objectType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies an administration object configuration property.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                The blocking-timeout-millis element indicates the maximum time in 
                milliseconds to block while waiting for a connection before throwing an exception. 
                Note that this blocks only while waiting for a permit for a connection, and 
                will never throw an exception if creating a new connection takes an inordinately 
                long time. The default is 30000 (30 seconds).  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 
              0.  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout(). Default is zero which does not invoke the setter.              
              Specified in seconds - e.g. 5 minutes
              <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false). Default is false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionsType">
    <xs:sequence>
      <xs:element name="connection-definition" type="connection-definitionType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a connection definition
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies managed connection factory configuration properties.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies xa-pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="security" type="securityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies timeout settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attribute name="use-ccm" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable cached connection manager
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more than max-pool-size connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. 
              Default is false. e.g. <prefill>false</prefill>.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="securityType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="application" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that app supplied parameters (such as from getConnection(user, pw))
                are used to distinguish connections in the pool.
                Ex:
                <application/>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates Subject (from security domain) are used to distinguish connections in the pool. 
                The content of the security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                Ex:
                <security-domain>HsqlDbRealm</security-domain>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain-and-application" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that either app supplied parameters (such as from
                getConnection(user, pw)) or Subject (from security domain) are used to
                distinguish connections in the pool. The content of the
                security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                
                Ex:
                <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>


  <xs:complexType name="admin-objectsType">
    <xs:sequence>
      <xs:element name="admin-object" type="admin-objectType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the setup for an admin object
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bean-validation-groupsType">
    <xs:sequence>
      <xs:element name="bean-validation-group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the fully qualified class name for a bean validation group that
              should be used for validation
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="credentialType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>
  <xs:complexType name="credentialType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
   </xs:complexType>
  

  <xs:element name="ironjacamar" type="ironjacamarType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies the fully qualified class name for a bean validation group that
          should be used for validation
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>


    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema"
           version="1.0">

  <xs:complexType name="boolean-presenceType"></xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies an override for a config-property element in ra.xml or a @ConfigProperty
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ironjacamarType">
    <xs:sequence>
      <xs:element name="bean-validation-groups" type="bean-validation-groupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies bean validation group that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bootstrap-context" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the unique name of the bootstrap context that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies resource adapter configuration properties.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-support" type="transaction-supportType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the transaction support level of the resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="workmanager" type="workmanagerType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the settings for the WorkManager used by this resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-definitions" type="connection-definitionsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the connection definitions
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="admin-objects" type="admin-objectsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the administration objects
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="transaction-supportType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define the type of transaction supported by this resource adapter.
          Valid values are: NoTransaction, LocalTransaction, XATransaction
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="NoTransaction" />
      <xs:enumeration value="LocalTransaction" />
      <xs:enumeration value="XATransaction" />
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="common-attribute">
    <xs:attribute name="class-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the the fully qualified class name of a managed connection factory
            or admin object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Should the object in question be activated
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if a java:/ JNDI context should be used 
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:complexType name="admin-objectType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies an administration object configuration property.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                The blocking-timeout-millis element indicates the maximum time in 
                milliseconds to block while waiting for a connection before throwing an exception. 
                Note that this blocks only while waiting for a permit for a connection, and 
                will never throw an exception if creating a new connection takes an inordinately 
                long time. The default is 30000 (30 seconds).  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 
              0.  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout(). Default is zero which does not invoke the setter.              
              Specified in seconds - e.g. 5 minutes
              <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false). Default is false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionsType">
    <xs:sequence>
      <xs:element name="connection-definition" type="connection-definitionType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a connection definition
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies managed connection factory configuration properties.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies xa-pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="security" type="securityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies timeout settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attribute name="use-ccm" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable cached connection manager
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sharable" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines the connections as sharable which allows lazy association to be enabled
            if supported
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enlistment" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if lazy enlistment should be used if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="initial-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The initial-pool-size element indicates the initial number of connections 
              a pool should hold. This default to 0. Ex: <initial-pool-size>1</initial-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more than max-pool-size connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. 
              Default is false. e.g. <prefill>false</prefill>.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), InvalidIdleConnections, IdleConnections, Gracefully, EntirePool,
                                AllInvalidIdleConnections, AllIdleConnections, AllGracefully, AllConnections
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="capacity" type="capacityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the capacity policies for the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="securityType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="application" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that app supplied parameters (such as from getConnection(user, pw))
                are used to distinguish connections in the pool.
                Ex:
                <application/>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates Subject (from security domain) are used to distinguish connections in the pool. 
                The content of the security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                Ex:
                <security-domain>HsqlDbRealm</security-domain>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain-and-application" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that either app supplied parameters (such as from
                getConnection(user, pw)) or Subject (from security domain) are used to
                distinguish connections in the pool. The content of the
                security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                
                Ex:
                <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>


  <xs:complexType name="admin-objectsType">
    <xs:sequence>
      <xs:element name="admin-object" type="admin-objectType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the setup for an admin object
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bean-validation-groupsType">
    <xs:sequence>
      <xs:element name="bean-validation-group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the fully qualified class name for a bean validation group that
              should be used for validation
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="credentialType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>
  <xs:complexType name="credentialType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
   </xs:complexType>
  

  <xs:complexType name="workmanagerType">
    <xs:sequence>
      <xs:element name="security" type="workmanagerSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the security model used by the WorkManager instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityType">
    <xs:sequence>
      <xs:element name="mapping-required" type="xs:boolean" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines if a mapping is required for security credentials. A value of false means
              "Case 1" as defined in section 16.4.3, and a value of true means "Case 2" as
              defined in section 16.4.4.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="domain" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the name of the security domain that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-principal" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default principal name that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-groups" type="workmanagerSecurityGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default groups that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="mappings" type="workmanagerSecurityMappingsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the mappings that should be applied for Case 2
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityGroupsType">
    <xs:sequence>
      <xs:element name="group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The name of the group
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsType">
    <xs:sequence>
      <xs:element name="users" type="workmanagerSecurityMappingsUsersType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the users
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="groups" type="workmanagerSecurityMappingsGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the groups
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsUsersType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A user mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsGroupsType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A group mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingType">
    <xs:sequence>
    </xs:sequence>
    <xs:attribute name="from" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the original value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="to" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the mapped value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="capacityType">
    <xs:sequence>
      <xs:element name="incrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for incrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="decrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for decrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ironjacamar" type="ironjacamarType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies the fully qualified class name for a bean validation group that
          should be used for validation
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>


    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema"
           version="1.0">

  <xs:complexType name="boolean-presenceType"></xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies an override for a config-property element in ra.xml or a @ConfigProperty
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ironjacamarType">
    <xs:sequence>
      <xs:element name="bean-validation-groups" type="bean-validation-groupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies bean validation group that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bootstrap-context" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the unique name of the bootstrap context that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies resource adapter configuration properties.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-support" type="transaction-supportType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the transaction support level of the resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="workmanager" type="workmanagerType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the settings for the WorkManager used by this resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-definitions" type="connection-definitionsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the connection definitions
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="admin-objects" type="admin-objectsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the administration objects
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="transaction-supportType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define the type of transaction supported by this resource adapter.
          Valid values are: NoTransaction, LocalTransaction, XATransaction
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="NoTransaction" />
      <xs:enumeration value="LocalTransaction" />
      <xs:enumeration value="XATransaction" />
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="common-attribute">
    <xs:attribute name="class-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the the fully qualified class name of a managed connection factory
            or admin object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Should the object in question be activated
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if a java:/ JNDI context should be used 
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:complexType name="admin-objectType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies an administration object configuration property.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                The blocking-timeout-millis element indicates the maximum time in 
                milliseconds to block while waiting for a connection before throwing an exception. 
                Note that this blocks only while waiting for a permit for a connection, and 
                will never throw an exception if creating a new connection takes an inordinately 
                long time. The default is 30000 (30 seconds).  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 
              0.  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout(). Default is zero which does not invoke the setter.              
              Specified in seconds - e.g. 5 minutes
              <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="validate-on-match" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The validate-on-match element indicates whether or not connection 
              level validation should be done when a connection factory attempts to match 
              a managed connection for a given set. This is typically exclusive to the 
              use of background validation 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false). Default is false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionsType">
    <xs:sequence>
      <xs:element name="connection-definition" type="connection-definitionType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a connection definition
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies managed connection factory configuration properties.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies xa-pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="security" type="securityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies timeout settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attribute name="use-ccm" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable cached connection manager
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sharable" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines the connections as sharable which allows lazy association to be enabled
            if supported
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enlistment" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if lazy enlistment should be used if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="connectable" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if external components can obtain a connection throught the IronJacamar SPI if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tracking" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if IronJacamar should track connection handles across transaction boundaries
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="initial-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The initial-pool-size element indicates the initial number of connections 
              a pool should hold. This default to 0. Ex: <initial-pool-size>1</initial-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more than max-pool-size connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. 
              Default is false. e.g. <prefill>false</prefill>.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), InvalidIdleConnections, IdleConnections, Gracefully, EntirePool,
                                AllInvalidIdleConnections, AllIdleConnections, AllGracefully, AllConnections
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="capacity" type="capacityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the capacity policies for the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="securityType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="application" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that app supplied parameters (such as from getConnection(user, pw))
                are used to distinguish connections in the pool.
                Ex:
                <application/>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates Subject (from security domain) are used to distinguish connections in the pool. 
                The content of the security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                Ex:
                <security-domain>HsqlDbRealm</security-domain>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain-and-application" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that either app supplied parameters (such as from
                getConnection(user, pw)) or Subject (from security domain) are used to
                distinguish connections in the pool. The content of the
                security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                
                Ex:
                <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>


  <xs:complexType name="admin-objectsType">
    <xs:sequence>
      <xs:element name="admin-object" type="admin-objectType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the setup for an admin object
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bean-validation-groupsType">
    <xs:sequence>
      <xs:element name="bean-validation-group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the fully qualified class name for a bean validation group that
              should be used for validation
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="credentialType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>
  <xs:complexType name="credentialType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
   </xs:complexType>
  

  <xs:complexType name="workmanagerType">
    <xs:sequence>
      <xs:element name="security" type="workmanagerSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the security model used by the WorkManager instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityType">
    <xs:sequence>
      <xs:element name="mapping-required" type="xs:boolean" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines if a mapping is required for security credentials. A value of false means
              "Case 1" as defined in section 16.4.3, and a value of true means "Case 2" as
              defined in section 16.4.4.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="domain" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the name of the security domain that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-principal" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default principal name that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-groups" type="workmanagerSecurityGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default groups that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="mappings" type="workmanagerSecurityMappingsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the mappings that should be applied for Case 2
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityGroupsType">
    <xs:sequence>
      <xs:element name="group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The name of the group
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsType">
    <xs:sequence>
      <xs:element name="users" type="workmanagerSecurityMappingsUsersType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the users
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="groups" type="workmanagerSecurityMappingsGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the groups
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsUsersType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A user mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsGroupsType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A group mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingType">
    <xs:sequence>
    </xs:sequence>
    <xs:attribute name="from" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the original value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="to" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the mapped value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="capacityType">
    <xs:sequence>
      <xs:element name="incrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for incrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="decrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for decrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ironjacamar" type="ironjacamarType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies the fully qualified class name for a bean validation group that
          should be used for validation
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>


    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema" xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:complexType name="boolean-presenceType"></xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies an override for a config-property element in ra.xml or a @ConfigProperty
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="resource-adapterType">
    <xs:sequence>
      <xs:element name="archive" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the resource adapter archive to be activated
              E.g. <archive>myra.rar</archive>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bean-validation-groups" type="bean-validation-groupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies bean validation group that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bootstrap-context" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the unique name of the bootstrap context that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies resource adapter configuration properties.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-support" type="transaction-supportType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the transaction support level of the resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-definitions" type="connection-definitionsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the connection definitions
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="admin-objects" type="admin-objectsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the administration objects
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="transaction-supportType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define the type of transaction supported by this resource adapter.
          Valid values are: NoTransaction, LocalTransaction, XATransaction
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="NoTransaction" />
      <xs:enumeration value="LocalTransaction" />
      <xs:enumeration value="XATransaction" />
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="common-attribute">
    <xs:attribute name="class-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the the fully qualified class name of a managed connection factory
            or admin object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Should the object in question be activated
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if a java:/ JNDI context should be used 
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:complexType name="admin-objectType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The config-property specifies administration object configuration properties.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                The blocking-timeout-millis element indicates the maximum time in 
                milliseconds to block while waiting for a connection before throwing an exception. 
                Note that this blocks only while waiting for a permit for a connection, and 
                will never throw an exception if creating a new connection takes an inordinately 
                long time. The default is 30000 (30 seconds).  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 
              0.  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 
              seconds). 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout(). Default is zero which does not invoke the setter.              
              Specified in seconds - e.g. 5 minutes
              <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The background-validation-millis element specifies the amount of 
               time, in millis, that background validation will run. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Whether fail a connection allocation on the first connection if it 
                is invalid (true) or keep trying until the pool is exhausted of all potential 
                connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="resource-adapters" type="resource-adaptersType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies activation of resource adapters
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="resource-adaptersType">
    <xs:sequence>
      <xs:element name="resource-adapter" type="resource-adapterType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies activation of a resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionsType">
    <xs:sequence>
      <xs:element name="connection-definition" type="connection-definitionType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a connection definition
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
             The config-property specifies managed connection factory configuration properties.
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies xa-pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="security" type="securityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies timeout settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attribute name="use-ccm" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable cached connection manager
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more than max-pool-size connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Default is false.
              e.g. <prefill>false</prefill>.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="securityType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="application" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that app supplied parameters (such as from getConnection(user, pw))
                are used to distinguish connections in the pool.
                Ex:
                <application/>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates Subject (from security domain) are used to distinguish connections in the pool. 
                The content of the security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                Ex:
                <security-domain>HsqlDbRealm</security-domain>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain-and-application" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that either app supplied parameters (such as from
                getConnection(user, pw)) or Subject (from security domain) are used to
                distinguish connections in the pool. The content of the
                security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                
                Ex:
                <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="admin-objectsType">
    <xs:sequence>
      <xs:element name="admin-object" type="admin-objectType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the setup for an admin object
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bean-validation-groupsType">
    <xs:sequence>
      <xs:element name="bean-validation-group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the fully qualified class name for a bean validation group that
              should be used for validation
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="credentialType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>
  <xs:complexType name="credentialType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
   </xs:complexType>

</xs:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema" xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:complexType name="boolean-presenceType"></xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies an override for a config-property element in ra.xml or a @ConfigProperty
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="resource-adapterType">
    <xs:sequence>
      <xs:element name="archive" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the resource adapter archive to be activated
              E.g. <archive>myra.rar</archive>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bean-validation-groups" type="bean-validation-groupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies bean validation group that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bootstrap-context" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the unique name of the bootstrap context that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies resource adapter configuration properties.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-support" type="transaction-supportType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the transaction support level of the resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="workmanager" type="workmanagerType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the settings for the WorkManager used by this resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-definitions" type="connection-definitionsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the connection definitions
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="admin-objects" type="admin-objectsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the administration objects
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            An unique identifier for the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:simpleType name="transaction-supportType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define the type of transaction supported by this resource adapter.
          Valid values are: NoTransaction, LocalTransaction, XATransaction
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="NoTransaction" />
      <xs:enumeration value="LocalTransaction" />
      <xs:enumeration value="XATransaction" />
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="common-attribute">
    <xs:attribute name="class-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the the fully qualified class name of a managed connection factory
            or admin object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Should the object in question be activated
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if a java:/ JNDI context should be used 
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:complexType name="admin-objectType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The config-property specifies administration object configuration properties.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                The blocking-timeout-millis element indicates the maximum time in 
                milliseconds to block while waiting for a connection before throwing an exception. 
                Note that this blocks only while waiting for a permit for a connection, and 
                will never throw an exception if creating a new connection takes an inordinately 
                long time. The default is 30000 (30 seconds).  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 
              0.  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 
              seconds). 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout(). Default is zero which does not invoke the setter.              
              Specified in seconds - e.g. 5 minutes
              <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The background-validation-millis element specifies the amount of 
               time, in millis, that background validation will run. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Whether fail a connection allocation on the first connection if it 
                is invalid (true) or keep trying until the pool is exhausted of all potential 
                connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="resource-adapters" type="resource-adaptersType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies activation of resource adapters
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="resource-adaptersType">
    <xs:sequence>
      <xs:element name="resource-adapter" type="resource-adapterType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies activation of a resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionsType">
    <xs:sequence>
      <xs:element name="connection-definition" type="connection-definitionType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a connection definition
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
             The config-property specifies managed connection factory configuration properties.
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies xa-pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="security" type="securityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies timeout settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attribute name="use-ccm" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable cached connection manager
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sharable" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines the connections as sharable which allows lazy association to be enabled
            if supported
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enlistment" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if lazy enlistment should be used if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="initial-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The initial-pool-size element indicates the initial number of connections 
              a pool should hold. This default to 0. Ex: <initial-pool-size>1</initial-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more than max-pool-size connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Default is false.
              e.g. <prefill>false</prefill>.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), InvalidIdleConnections, IdleConnections, Gracefully, EntirePool,
                                AllInvalidIdleConnections, AllIdleConnections, AllGracefully, AllConnections
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="capacity" type="capacityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the capacity policies for the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="securityType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="application" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that app supplied parameters (such as from getConnection(user, pw))
                are used to distinguish connections in the pool.
                Ex:
                <application/>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates Subject (from security domain) are used to distinguish connections in the pool. 
                The content of the security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                Ex:
                <security-domain>HsqlDbRealm</security-domain>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain-and-application" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that either app supplied parameters (such as from
                getConnection(user, pw)) or Subject (from security domain) are used to
                distinguish connections in the pool. The content of the
                security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                
                Ex:
                <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="admin-objectsType">
    <xs:sequence>
      <xs:element name="admin-object" type="admin-objectType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the setup for an admin object
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bean-validation-groupsType">
    <xs:sequence>
      <xs:element name="bean-validation-group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the fully qualified class name for a bean validation group that
              should be used for validation
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="credentialType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>
  <xs:complexType name="credentialType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
   </xs:complexType>

  <xs:complexType name="workmanagerType">
    <xs:sequence>
      <xs:element name="security" type="workmanagerSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the security model used by the WorkManager instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityType">
    <xs:sequence>
      <xs:element name="mapping-required" type="xs:boolean" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines if a mapping is required for security credentials. A value of false means
              "Case 1" as defined in section 16.4.3, and a value of true means "Case 2" as
              defined in section 16.4.4.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="domain" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the name of the security domain that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-principal" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default principal name that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-groups" type="workmanagerSecurityGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default groups that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="mappings" type="workmanagerSecurityMappingsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the mappings that should be applied for Case 2
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityGroupsType">
    <xs:sequence>
      <xs:element name="group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The name of the group
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsType">
    <xs:sequence>
      <xs:element name="users" type="workmanagerSecurityMappingsUsersType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the users
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="groups" type="workmanagerSecurityMappingsGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the groups
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsUsersType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A user mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsGroupsType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A group mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingType">
    <xs:sequence>
    </xs:sequence>
    <xs:attribute name="from" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the original value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="to" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the mapped value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="capacityType">
    <xs:sequence>
      <xs:element name="incrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for incrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="decrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for decrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema" xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:complexType name="boolean-presenceType"></xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies an override for a config-property element in ra.xml or a @ConfigProperty
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="resource-adapterType">
    <xs:sequence>
      <xs:element name="archive" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the resource adapter archive to be activated
              E.g. <archive>myra.rar</archive>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bean-validation-groups" type="bean-validation-groupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies bean validation group that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="bootstrap-context" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the unique name of the bootstrap context that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The config-property specifies resource adapter configuration properties.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-support" type="transaction-supportType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the transaction support level of the resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="workmanager" type="workmanagerType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the settings for the WorkManager used by this resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-definitions" type="connection-definitionsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the connection definitions
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="admin-objects" type="admin-objectsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the administration objects
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            An unique identifier for the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:simpleType name="transaction-supportType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define the type of transaction supported by this resource adapter.
          Valid values are: NoTransaction, LocalTransaction, XATransaction
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="NoTransaction" />
      <xs:enumeration value="LocalTransaction" />
      <xs:enumeration value="XATransaction" />
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="common-attribute">
    <xs:attribute name="class-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the the fully qualified class name of a managed connection factory
            or admin object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Should the object in question be activated
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if a java:/ JNDI context should be used 
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the object
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:complexType name="admin-objectType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The config-property specifies administration object configuration properties.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                The blocking-timeout-millis element indicates the maximum time in 
                milliseconds to block while waiting for a connection before throwing an exception. 
                Note that this blocks only while waiting for a permit for a connection, and 
                will never throw an exception if creating a new connection takes an inordinately 
                long time. The default is 30000 (30 seconds).  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 
              0.  
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 
              seconds). 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout(). Default is zero which does not invoke the setter.              
              Specified in seconds - e.g. 5 minutes
              <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="validate-on-match" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The validate-on-match element indicates whether or not connection 
              level validation should be done when a connection factory attempts to match 
              a managed connection for a given set. This is typically exclusive to the 
              use of background validation 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               The background-validation-millis element specifies the amount of 
               time, in millis, that background validation will run. 
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Whether fail a connection allocation on the first connection if it 
                is invalid (true) or keep trying until the pool is exhausted of all potential 
                connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="resource-adapters" type="resource-adaptersType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies activation of resource adapters
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>

  <xs:complexType name="resource-adaptersType">
    <xs:sequence>
      <xs:element name="resource-adapter" type="resource-adapterType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies activation of a resource adapter
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionsType">
    <xs:sequence>
      <xs:element name="connection-definition" type="connection-definitionType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a connection definition
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="connection-definitionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
             The config-property specifies managed connection factory configuration properties.
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
                <![CDATA[[
                  Specifies xa-pooling settings
                 ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="security" type="securityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies timeout settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attribute name="use-ccm" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable cached connection manager
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sharable" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines the connections as sharable which allows lazy association to be enabled
            if supported
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enlistment" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if lazy enlistment should be used if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="connectable" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if external components can obtain a connection throught the IronJacamar SPI if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tracking" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if IronJacamar should track connection handles across transaction boundaries
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-attribute"></xs:attributeGroup>
  </xs:complexType>

  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="initial-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The initial-pool-size element indicates the initial number of connections 
              a pool should hold. This default to 0. Ex: <initial-pool-size>1</initial-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more than max-pool-size connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Default is false.
              e.g. <prefill>false</prefill>.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), InvalidIdleConnections, IdleConnections, Gracefully, EntirePool,
                                AllInvalidIdleConnections, AllIdleConnections, AllGracefully, AllConnections
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="capacity" type="capacityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the capacity policies for the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="securityType">
    <xs:sequence>
      <xs:choice>
        <xs:element name="application" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that app supplied parameters (such as from getConnection(user, pw))
                are used to distinguish connections in the pool.
                Ex:
                <application/>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates Subject (from security domain) are used to distinguish connections in the pool. 
                The content of the security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                Ex:
                <security-domain>HsqlDbRealm</security-domain>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="security-domain-and-application" type="xs:token" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Indicates that either app supplied parameters (such as from
                getConnection(user, pw)) or Subject (from security domain) are used to
                distinguish connections in the pool. The content of the
                security-domain is the name of the JAAS security manager that will handle
                authentication. This name correlates to the JAAS login-config.xml descriptor
                application-policy/name attribute.
                
                Ex:
                <security-domain-and-application>HsqlDbRealm</security-domain-and-application>
              ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="admin-objectsType">
    <xs:sequence>
      <xs:element name="admin-object" type="admin-objectType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the setup for an admin object
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bean-validation-groupsType">
    <xs:sequence>
      <xs:element name="bean-validation-group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the fully qualified class name for a bean validation group that
              should be used for validation
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="credentialType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>
  <xs:complexType name="credentialType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
   </xs:complexType>

  <xs:complexType name="workmanagerType">
    <xs:sequence>
      <xs:element name="security" type="workmanagerSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the security model used by the WorkManager instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityType">
    <xs:sequence>
      <xs:element name="mapping-required" type="xs:boolean" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines if a mapping is required for security credentials. A value of false means
              "Case 1" as defined in section 16.4.3, and a value of true means "Case 2" as
              defined in section 16.4.4.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="domain" type="xs:token" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the name of the security domain that should be used
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-principal" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default principal name that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="default-groups" type="workmanagerSecurityGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines a default groups that should be added to the used Subject instance
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="mappings" type="workmanagerSecurityMappingsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the mappings that should be applied for Case 2
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityGroupsType">
    <xs:sequence>
      <xs:element name="group" type="xs:token" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The name of the group
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsType">
    <xs:sequence>
      <xs:element name="users" type="workmanagerSecurityMappingsUsersType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the users
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="groups" type="workmanagerSecurityMappingsGroupsType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The mappings for the groups
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsUsersType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A user mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingsGroupsType">
    <xs:sequence>
      <xs:element name="map" type="workmanagerSecurityMappingType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A group mapping
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="workmanagerSecurityMappingType">
    <xs:sequence>
    </xs:sequence>
    <xs:attribute name="from" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the original value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="to" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify the mapped value
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="capacityType">
    <xs:sequence>
      <xs:element name="incrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for incrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="decrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for decrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:element name="datasources" type="datasourcesType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          The datasources element is the root of the JDBC datasource configuration 
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="datasourcesType">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="datasource" type="datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a non-XA datasource, using local transactions
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-datasource" type="xa-datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a XA datasource
                ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="drivers" type="driversType" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="datasourceType" mixed="false">
    <xs:sequence>
      <xs:element name="connection-url" type="xs:token">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The JDBC driver connection URL Ex: <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC datasource class Ex: <datasource-class>org.h2.jdbcx.JdbcDataSource</datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-property" type="connection-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The connection-property element allows you to pass in arbitrary connection 
              properties to the Driver.connect(url, props) method. Each connection-property 
              specifies a string name/value pair with the property name coming from the 
              name attribute and the value coming from the element content. Ex: 
              <connection-property name="char.encoding">UTF-8</connection-property>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to execute whenever a connection is added 
              to the connection pool.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the delimeter for URLs in connection-url for HA datasources
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="jta" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable JTA integration
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="xa-datasourceType">
    <xs:sequence>
      <xs:element name="xa-datasource-property" type="xa-datasource-propertyType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a property to assign to the XADataSource implementation class. 
              Each property is identified by the name attribute and the property value 
              is given by the xa-datasource-property element content. The property is mapped 
              onto the XADataSource implementation by looking for a JavaBeans style getter 
              method for the property name. If found, the value of the property is set 
              using the JavaBeans setter with the element text translated to the true property 
              type using the java.beans.PropertyEditor for the type. Ex: 
              <xa-datasource-property name="IfxWAITTIME">10</xa-datasource-property>
              <xa-datasource-property name="IfxIFXHOST">myhost.mydomain.com</xa-datasource-property> 
              <xa-datasource-property name="PortNumber">1557</xa-datasource-property>
              <xa-datasource-property name="DatabaseName">mydb</xa-datasource-property>
              <xa-datasource-property name="ServerName">myserver</xa-datasource-property>  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies the delimeter for URLs in the connection url for HA datasources
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies an SQL statement to execute whenever a connection is added 
               to the connection pool.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="boolean-presenceType" />
  <xs:attributeGroup name="common-datasourceAttributes">
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name for the datasource
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the datasource used for management
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if the datasource should be enabled
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Setting this to false will bind the DataSource into global JNDI
            Ex: use-java-context="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="false" name="spy" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable spy functionality on the JDBC layer - e.g. log all JDBC traffic to the datasource.
            Remember to enable the logging category (org.jboss.jdbc) too.
            Ex: spy="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-ccm" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable the use of a cached connection manager
            Ex: use-ccm="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:simpleType name="transaction-isolationType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define constants used as the possible transaction isolation levels in transaction-isolation
          type. Include: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ,
          TRANSACTION_SERIALIZABLE, TRANSACTION_NONE
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="TRANSACTION_READ_UNCOMMITTED" />
      <xs:enumeration value="TRANSACTION_READ_COMMITTED" />
      <xs:enumeration value="TRANSACTION_REPEATABLE_READ" />
      <xs:enumeration value="TRANSACTION_SERIALIZABLE" />
      <xs:enumeration value="TRANSACTION_NONE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="xa-datasource-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="connection-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="valid-connection-checker" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides 
              a SQLException isValidConnection(Connection e) method to validate is a connection 
              is valid. An exception means the connection is destroyed. This overrides 
              the check-valid-connection-sql when present. Ex:
              <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleValidConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      
      <xs:element name="check-valid-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to check validity of a pool connection. This 
              may be called when managed connection is taken from pool for use. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validate-on-match" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The validate-on-match element indicates whether or not connection 
              level validation should be done when a connection factory attempts to match 
              a managed connection for a given set. This is typically exclusive to the 
              use of background validation 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="stale-connection-checker" type="extensionType">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides 
              a boolean isStaleConnection(SQLException e) method which if it it returns 
              true will wrap the exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException 
              which is a subclass of SQLException. Ex: 
              <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleStaleConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="exception-sorter" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a 
              boolean isExceptionFatal(SQLException e) method to validate is an exception 
              should be broadcast to all javax.resource.spi.ConnectionEventListener as 
              a connectionErrorOccurred message. Ex: 
              <exception-sorter class-name="org.jboss.jca.adapters.jdbc.vendor.OracleExceptionSorter"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The blocking-timeout-millis element indicates the maximum time in 
              milliseconds to block while waiting for a connection before throwing an exception. 
              Note that this blocks only while waiting for a permit for a connection, and 
              will never throw an exception if creating a new connection takes an inordinately 
              long time. The default is 30000 (30 seconds).  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="set-tx-query-timeout" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to set the query timeout based on the time remaining until 
              transaction timeout, any configured query timeout will be used if there is 
              no transaction. The default is false. e.g. <set-tx-query-timeout/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="query-timeout" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured query timeout in seconds The default is no timeout 
              e.g. 5 minutes <query-timeout>300</query-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-try-lock" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured timeout for internal locks on the resource adapter 
              objects in seconds The default is a 60 second timeout e.g. 5 minutes <use-try-lock>300</use-try-lock>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 0.  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout() Default is zero which 
              does not invoke the setter. In seconds e.g. 5 minutes <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="track-statementsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
      <xs:enumeration value="nowarn" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="statementType">
    <xs:sequence>
      <xs:element name="track-statements" type="track-statementsType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to check for unclosed statements when a connection is returned 
              to the pool and result sets are closed when a statement is closed/return 
              to the prepared statement cache. valid values are: false - do not track statements 
              and results true - track statements and result sets and warn when they are 
              not closed nowarn - track statements but do no warn about them being unclosed 
              (the default) e.g. <track-statements>nowarn</track-statements>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prepared-statement-cache-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The number of prepared statements per connection in an LRU cache
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="share-prepared-statements" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to share prepare statements, i.e. whether asking for same 
              statement twice without closing uses the same underlying prepared statement. 
              The default is false. e.g. <share-prepared-statements/>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Empty element denotes 
              a true value. e.g. <prefill>true</prefill>.
              Default is false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="dsSecurityType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="reauth-plugin" type="extensionType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies a Java bean property value
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="dsSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driverType">
    <xs:sequence>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.DataSource implementation 
              class.
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the symbolic name of this driver used to reference this driver
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="module" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the name of AS7 module providing this driver.
            Thios tag is not used in IronJacamar standalone container.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="major-version" type="xs:int" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the major version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="minor-verion" type="xs:int" use="optional">
    <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the minor version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driversType">
    <xs:sequence>
      <xs:element name="driver" type="driverType" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:element name="datasources" type="datasourcesType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          The datasources element is the root of the JDBC datasource configuration 
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="datasourcesType">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="datasource" type="datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a non-XA datasource, using local transactions
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-datasource" type="xa-datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a XA datasource
                ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="drivers" type="driversType" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="datasourceType" mixed="false">
    <xs:sequence>
      <xs:element name="connection-url" type="xs:token">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The JDBC driver connection URL Ex: <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC datasource class Ex: <datasource-class>org.h2.jdbcx.JdbcDataSource</datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-property" type="connection-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The connection-property element allows you to pass in arbitrary connection 
              properties to the Driver.connect(url, props) method. Each connection-property 
              specifies a string name/value pair with the property name coming from the 
              name attribute and the value coming from the element content. Ex: 
              <connection-property name="char.encoding">UTF-8</connection-property>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to execute whenever a connection is added 
              to the connection pool.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the delimeter for URLs in connection-url for HA datasources
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="jta" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable JTA integration
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="xa-datasourceType">
    <xs:sequence>
      <xs:element name="xa-datasource-property" type="xa-datasource-propertyType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a property to assign to the XADataSource implementation class. 
              Each property is identified by the name attribute and the property value 
              is given by the xa-datasource-property element content. The property is mapped 
              onto the XADataSource implementation by looking for a JavaBeans style getter 
              method for the property name. If found, the value of the property is set 
              using the JavaBeans setter with the element text translated to the true property 
              type using the java.beans.PropertyEditor for the type. Ex: 
              <xa-datasource-property name="IfxWAITTIME">10</xa-datasource-property>
              <xa-datasource-property name="IfxIFXHOST">myhost.mydomain.com</xa-datasource-property> 
              <xa-datasource-property name="PortNumber">1557</xa-datasource-property>
              <xa-datasource-property name="DatabaseName">mydb</xa-datasource-property>
              <xa-datasource-property name="ServerName">myserver</xa-datasource-property>  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies the delimeter for URLs in the connection url for HA datasources
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies an SQL statement to execute whenever a connection is added 
               to the connection pool.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="boolean-presenceType" />
  <xs:attributeGroup name="common-datasourceAttributes">
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name for the datasource
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the datasource used for management
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if the datasource should be enabled
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Setting this to false will bind the DataSource into global JNDI
            Ex: use-java-context="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="false" name="spy" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable spy functionality on the JDBC layer - e.g. log all JDBC traffic to the datasource.
            Remember to enable the logging category (org.jboss.jdbc) too.
            Ex: spy="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-ccm" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable the use of a cached connection manager
            Ex: use-ccm="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:simpleType name="transaction-isolationType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define constants used as the possible transaction isolation levels in transaction-isolation
          type. Include: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ,
          TRANSACTION_SERIALIZABLE, TRANSACTION_NONE
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="TRANSACTION_READ_UNCOMMITTED" />
      <xs:enumeration value="TRANSACTION_READ_COMMITTED" />
      <xs:enumeration value="TRANSACTION_REPEATABLE_READ" />
      <xs:enumeration value="TRANSACTION_SERIALIZABLE" />
      <xs:enumeration value="TRANSACTION_NONE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="xa-datasource-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="connection-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="valid-connection-checker" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides 
              a SQLException isValidConnection(Connection e) method to validate is a connection 
              is valid. An exception means the connection is destroyed. This overrides 
              the check-valid-connection-sql when present. Ex:
              <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleValidConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      
      <xs:element name="check-valid-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to check validity of a pool connection. This 
              may be called when managed connection is taken from pool for use. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validate-on-match" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The validate-on-match element indicates whether or not connection 
              level validation should be done when a connection factory attempts to match 
              a managed connection for a given set. This is typically exclusive to the 
              use of background validation 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="stale-connection-checker" type="extensionType">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides 
              a boolean isStaleConnection(SQLException e) method which if it it returns 
              true will wrap the exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException 
              which is a subclass of SQLException. Ex: 
              <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleStaleConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="exception-sorter" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a 
              boolean isExceptionFatal(SQLException e) method to validate is an exception 
              should be broadcast to all javax.resource.spi.ConnectionEventListener as 
              a connectionErrorOccurred message. Ex: 
              <exception-sorter class-name="org.jboss.jca.adapters.jdbc.vendor.OracleExceptionSorter"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The blocking-timeout-millis element indicates the maximum time in 
              milliseconds to block while waiting for a connection before throwing an exception. 
              Note that this blocks only while waiting for a permit for a connection, and 
              will never throw an exception if creating a new connection takes an inordinately 
              long time. The default is 30000 (30 seconds).  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="set-tx-query-timeout" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to set the query timeout based on the time remaining until 
              transaction timeout, any configured query timeout will be used if there is 
              no transaction. The default is false. e.g. <set-tx-query-timeout/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="query-timeout" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured query timeout in seconds The default is no timeout 
              e.g. 5 minutes <query-timeout>300</query-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-try-lock" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured timeout for internal locks on the resource adapter 
              objects in seconds The default is a 60 second timeout e.g. 5 minutes <use-try-lock>300</use-try-lock>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 0.  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout() Default is zero which 
              does not invoke the setter. In seconds e.g. 5 minutes <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="track-statementsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
      <xs:enumeration value="nowarn" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="statementType">
    <xs:sequence>
      <xs:element name="track-statements" type="track-statementsType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to check for unclosed statements when a connection is returned 
              to the pool and result sets are closed when a statement is closed/return 
              to the prepared statement cache. valid values are: false - do not track statements 
              and results true - track statements and result sets and warn when they are 
              not closed nowarn - track statements but do no warn about them being unclosed 
              (the default) e.g. <track-statements>nowarn</track-statements>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prepared-statement-cache-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The number of prepared statements per connection in an LRU cache
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="share-prepared-statements" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to share prepare statements, i.e. whether asking for same 
              statement twice without closing uses the same underlying prepared statement. 
              The default is false. e.g. <share-prepared-statements/>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Empty element denotes 
              a true value. e.g. <prefill>true</prefill>.
              Default is false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), IdleConnections, EntirePool 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allow-multiple-users" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies if multiple users will access the datasource through the getConnection(user, password)
              method and hence if the internal pool type should account for that
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="dsSecurityType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="reauth-plugin" type="extensionType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies a Java bean property value
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="dsSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driverType">
    <xs:sequence>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.DataSource implementation 
              class.
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the symbolic name of this driver used to reference this driver
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="module" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the name of AS7 module providing this driver.
            Thios tag is not used in IronJacamar standalone container.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="major-version" type="xs:int" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the major version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="minor-verion" type="xs:int" use="optional">
    <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the minor version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driversType">
    <xs:sequence>
      <xs:element name="driver" type="driverType" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:element name="datasources" type="datasourcesType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          The datasources element is the root of the JDBC datasource configuration 
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="datasourcesType">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="datasource" type="datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a non-XA datasource, using local transactions
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-datasource" type="xa-datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a XA datasource
                ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="drivers" type="driversType" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="datasourceType" mixed="false">
    <xs:sequence>
      <xs:element name="connection-url" type="xs:token">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The JDBC driver connection URL Ex: <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC datasource class Ex: <datasource-class>org.h2.jdbcx.JdbcDataSource</datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-property" type="connection-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The connection-property element allows you to pass in arbitrary connection 
              properties to the Driver.connect(url, props) method. Each connection-property 
              specifies a string name/value pair with the property name coming from the 
              name attribute and the value coming from the element content. Ex: 
              <connection-property name="char.encoding">UTF-8</connection-property>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to execute whenever a connection is added 
              to the connection pool.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the delimeter for URLs in connection-url for HA datasources
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="jta" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable JTA integration
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="xa-datasourceType">
    <xs:sequence>
      <xs:element name="xa-datasource-property" type="xa-datasource-propertyType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a property to assign to the XADataSource implementation class. 
              Each property is identified by the name attribute and the property value 
              is given by the xa-datasource-property element content. The property is mapped 
              onto the XADataSource implementation by looking for a JavaBeans style getter 
              method for the property name. If found, the value of the property is set 
              using the JavaBeans setter with the element text translated to the true property 
              type using the java.beans.PropertyEditor for the type. Ex: 
              <xa-datasource-property name="IfxWAITTIME">10</xa-datasource-property>
              <xa-datasource-property name="IfxIFXHOST">myhost.mydomain.com</xa-datasource-property> 
              <xa-datasource-property name="PortNumber">1557</xa-datasource-property>
              <xa-datasource-property name="DatabaseName">mydb</xa-datasource-property>
              <xa-datasource-property name="ServerName">myserver</xa-datasource-property>  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies the delimeter for URLs in the connection url for HA datasources
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-property" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies the property for the URL property in the xa-datasource-property values
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies an SQL statement to execute whenever a connection is added 
               to the connection pool.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="boolean-presenceType" />
  <xs:attributeGroup name="common-datasourceAttributes">
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name for the datasource
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the datasource used for management
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if the datasource should be enabled
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Setting this to false will bind the DataSource into global JNDI
            Ex: use-java-context="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="false" name="spy" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable spy functionality on the JDBC layer - e.g. log all JDBC traffic to the datasource.
            Remember to enable the logging category (org.jboss.jdbc) too.
            Ex: spy="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-ccm" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable the use of a cached connection manager
            Ex: use-ccm="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:simpleType name="transaction-isolationType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define constants used as the possible transaction isolation levels in transaction-isolation
          type. Include: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ,
          TRANSACTION_SERIALIZABLE, TRANSACTION_NONE
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="TRANSACTION_READ_UNCOMMITTED" />
      <xs:enumeration value="TRANSACTION_READ_COMMITTED" />
      <xs:enumeration value="TRANSACTION_REPEATABLE_READ" />
      <xs:enumeration value="TRANSACTION_SERIALIZABLE" />
      <xs:enumeration value="TRANSACTION_NONE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="xa-datasource-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="connection-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="valid-connection-checker" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides 
              a SQLException isValidConnection(Connection e) method to validate is a connection 
              is valid. An exception means the connection is destroyed. This overrides 
              the check-valid-connection-sql when present. Ex:
              <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleValidConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      
      <xs:element name="check-valid-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to check validity of a pool connection. This 
              may be called when managed connection is taken from pool for use. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validate-on-match" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The validate-on-match element indicates whether or not connection 
              level validation should be done when a connection factory attempts to match 
              a managed connection for a given set. This is typically exclusive to the 
              use of background validation 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="stale-connection-checker" type="extensionType">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides 
              a boolean isStaleConnection(SQLException e) method which if it it returns 
              true will wrap the exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException 
              which is a subclass of SQLException. Ex: 
              <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleStaleConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="exception-sorter" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a 
              boolean isExceptionFatal(SQLException e) method to validate is an exception 
              should be broadcast to all javax.resource.spi.ConnectionEventListener as 
              a connectionErrorOccurred message. Ex: 
              <exception-sorter class-name="org.jboss.jca.adapters.jdbc.vendor.OracleExceptionSorter"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The blocking-timeout-millis element indicates the maximum time in 
              milliseconds to block while waiting for a connection before throwing an exception. 
              Note that this blocks only while waiting for a permit for a connection, and 
              will never throw an exception if creating a new connection takes an inordinately 
              long time. The default is 30000 (30 seconds).  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="set-tx-query-timeout" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to set the query timeout based on the time remaining until 
              transaction timeout, any configured query timeout will be used if there is 
              no transaction. The default is false. e.g. <set-tx-query-timeout/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="query-timeout" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured query timeout in seconds The default is no timeout 
              e.g. 5 minutes <query-timeout>300</query-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-try-lock" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured timeout for internal locks on the resource adapter 
              objects in seconds The default is a 60 second timeout e.g. 5 minutes <use-try-lock>300</use-try-lock>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 0.  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout() Default is zero which 
              does not invoke the setter. In seconds e.g. 5 minutes <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="track-statementsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
      <xs:enumeration value="nowarn" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="statementType">
    <xs:sequence>
      <xs:element name="track-statements" type="track-statementsType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to check for unclosed statements when a connection is returned 
              to the pool and result sets are closed when a statement is closed/return 
              to the prepared statement cache. valid values are: false - do not track statements 
              and results true - track statements and result sets and warn when they are 
              not closed nowarn - track statements but do no warn about them being unclosed 
              (the default) e.g. <track-statements>nowarn</track-statements>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prepared-statement-cache-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The number of prepared statements per connection in an LRU cache
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="share-prepared-statements" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to share prepare statements, i.e. whether asking for same 
              statement twice without closing uses the same underlying prepared statement. 
              The default is false. e.g. <share-prepared-statements/>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="initial-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The initial-pool-size element indicates the initial number of connections 
              a pool should hold. This default to 0. Ex: <initial-pool-size>1</initial-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Empty element denotes 
              a true value. e.g. <prefill>true</prefill>.
              Default is false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), InvalidIdleConnections, IdleConnections, Gracefully, EntirePool,
                                AllInvalidIdleConnections, AllIdleConnections, AllGracefully, AllConnections
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allow-multiple-users" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies if multiple users will access the datasource through the getConnection(user, password)
              method and hence if the internal pool type should account for that
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="capacity" type="capacityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the capacity policies for the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-listener" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.spi.listener.ConnectionListener that provides 
              a possible to listen for connection activation and passivation in order to
              perform actions before the connection is returned to the application or returned
              to the pool. Ex:
              <connection-listener class-name="com.acme.jdbc.OracleConnectionListener"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="dsSecurityType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="reauth-plugin" type="extensionType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies a Java bean property value
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="dsSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driverType">
    <xs:sequence>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.DataSource implementation 
              class.
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the symbolic name of this driver used to reference this driver
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="module" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the name of AS7 module providing this driver.
            Thios tag is not used in IronJacamar standalone container.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="major-version" type="xs:int" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the major version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="minor-verion" type="xs:int" use="optional">
    <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the minor version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driversType">
    <xs:sequence>
      <xs:element name="driver" type="driverType" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="capacityType">
    <xs:sequence>
      <xs:element name="incrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for incrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="decrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for decrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

    


      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified"
           targetNamespace="http://www.ironjacamar.org/doc/schema"
           xmlns="http://www.ironjacamar.org/doc/schema">

  <xs:element name="datasources" type="datasourcesType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          The datasources element is the root of the JDBC datasource configuration 
         ]]>
      </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="datasourcesType">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="datasource" type="datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a non-XA datasource, using local transactions
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="xa-datasource" type="xa-datasourceType">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies a XA datasource
                ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
      <xs:element name="drivers" type="driversType" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="datasourceType" mixed="false">
    <xs:sequence>
      <xs:element name="connection-url" type="xs:token">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The JDBC driver connection URL Ex: <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC datasource class Ex: <datasource-class>org.h2.jdbcx.JdbcDataSource</datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-property" type="connection-propertyType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The connection-property element allows you to pass in arbitrary connection 
              properties to the Driver.connect(url, props) method. Each connection-property 
              specifies a string name/value pair with the property name coming from the 
              name attribute and the value coming from the element content. Ex: 
              <connection-property name="char.encoding">UTF-8</connection-property>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to execute whenever a connection is added 
              to the connection pool.
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the delimeter for URLs in connection-url for HA datasources
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="pool" type="poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="jta" type="xs:boolean" default="true" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable JTA integration
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="xa-datasourceType">
    <xs:sequence>
      <xs:element name="xa-datasource-property" type="xa-datasource-propertyType" minOccurs="1" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies a property to assign to the XADataSource implementation class. 
              Each property is identified by the name attribute and the property value 
              is given by the xa-datasource-property element content. The property is mapped 
              onto the XADataSource implementation by looking for a JavaBeans style getter 
              method for the property name. If found, the value of the property is set 
              using the JavaBeans setter with the element text translated to the true property 
              type using the java.beans.PropertyEditor for the type. Ex: 
              <xa-datasource-property name="IfxWAITTIME">10</xa-datasource-property>
              <xa-datasource-property name="IfxIFXHOST">myhost.mydomain.com</xa-datasource-property> 
              <xa-datasource-property name="PortNumber">1557</xa-datasource-property>
              <xa-datasource-property name="DatabaseName">mydb</xa-datasource-property>
              <xa-datasource-property name="ServerName">myserver</xa-datasource-property>  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="driver" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An unique reference to the classloader module which contains the JDBC driver
              The accepted format is driverName#majorVersion.minorVersion
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-delimiter" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies the delimeter for URLs in the connection url for HA datasources
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-property" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies the property for the URL property in the xa-datasource-property values
              ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="url-selector-strategy-class-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               A class that implements org.jboss.jca.adapters.jdbc.URLSelectorStrategy
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="new-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
               Specifies an SQL statement to execute whenever a connection is added 
               to the connection pool.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="transaction-isolation" type="transaction-isolationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Set java.sql.Connection transaction isolation level to use. The constants 
              defined by transaction-isolation-values are the possible transaction isolation 
              levels and include: TRANSACTION_READ_UNCOMMITTED TRANSACTION_READ_COMMITTED 
              TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE TRANSACTION_NONE
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-pool" type="xa-poolType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the pooling settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security" type="dsSecurityType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validation" type="validationType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the validation settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="timeout" type="timeoutType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the time out settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="statement" type="statementType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the statement settings
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recovery" type="recoverType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
    <xs:attributeGroup ref="common-datasourceAttributes" />
  </xs:complexType>
  <xs:complexType name="boolean-presenceType" />
  <xs:attributeGroup name="common-datasourceAttributes">
    <xs:attribute name="jndi-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the JNDI name for the datasource
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pool-name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the pool name for the datasource used for management
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enabled" type="xs:boolean" default="true" form="unqualified" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies if the datasource should be enabled
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-java-context" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Setting this to false will bind the DataSource into global JNDI
            Ex: use-java-context="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="false" name="spy" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable spy functionality on the JDBC layer - e.g. log all JDBC traffic to the datasource.
            Remember to enable the logging category (org.jboss.jdbc) too.
            Ex: spy="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute default="true" name="use-ccm" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Enable the use of a cached connection manager
            Ex: use-ccm="true"
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="connectable" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if external components can obtain a connection throught the IronJacamar SPI if supported by the resource adapter
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tracking" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Defines if IronJacamar should track connection handles across transaction boundaries
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:simpleType name="transaction-isolationType">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Define constants used as the possible transaction isolation levels in transaction-isolation
          type. Include: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ,
          TRANSACTION_SERIALIZABLE, TRANSACTION_NONE
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
      <xs:enumeration value="TRANSACTION_READ_UNCOMMITTED" />
      <xs:enumeration value="TRANSACTION_READ_COMMITTED" />
      <xs:enumeration value="TRANSACTION_REPEATABLE_READ" />
      <xs:enumeration value="TRANSACTION_SERIALIZABLE" />
      <xs:enumeration value="TRANSACTION_NONE" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="xa-datasource-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="connection-propertyType" mixed="true">
    <xs:attribute name="name" use="required" type="xs:token" />
  </xs:complexType>
  <xs:complexType name="validationType">
    <xs:sequence>
      <xs:element name="valid-connection-checker" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides 
              a SQLException isValidConnection(Connection e) method to validate is a connection 
              is valid. An exception means the connection is destroyed. This overrides 
              the check-valid-connection-sql when present. Ex:
              <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleValidConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      
      <xs:element name="check-valid-connection-sql" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specify an SQL statement to check validity of a pool connection. This 
              may be called when managed connection is taken from pool for use. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="validate-on-match" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The validate-on-match element indicates whether or not connection 
              level validation should be done when a connection factory attempts to match 
              a managed connection for a given set. This is typically exclusive to the 
              use of background validation 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An element to specify that connections should be validated on a background 
              thread versus being validated prior to use 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="background-validation-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The background-validation-millis element specifies the amount of 
              time, in millis, that background validation will run. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-fast-fail" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether fail a connection allocation on the first connection if it 
              is invalid (true) or keep trying until the pool is exhausted of all potential 
              connections (false) default false. e.g. <use-fast-fail>true</use-fast-fail>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" name="stale-connection-checker" type="extensionType">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.StaleConnectionChecker that provides 
              a boolean isStaleConnection(SQLException e) method which if it it returns 
              true will wrap the exception in an org.jboss.jca.adapters.jdbc.StaleConnectionException 
              which is a subclass of SQLException. Ex: 
              <stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.vendor.OracleStaleConnectionChecker"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="exception-sorter" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a 
              boolean isExceptionFatal(SQLException e) method to validate is an exception 
              should be broadcast to all javax.resource.spi.ConnectionEventListener as 
              a connectionErrorOccurred message. Ex: 
              <exception-sorter class-name="org.jboss.jca.adapters.jdbc.vendor.OracleExceptionSorter"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="timeoutType">
    <xs:sequence>
      <xs:element name="blocking-timeout-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The blocking-timeout-millis element indicates the maximum time in 
              milliseconds to block while waiting for a connection before throwing an exception. 
              Note that this blocks only while waiting for a permit for a connection, and 
              will never throw an exception if creating a new connection takes an inordinately 
              long time. The default is 30000 (30 seconds).  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="idle-timeout-minutes" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The idle-timeout-minutes elements indicates the maximum time in minutes 
              a connection may be idle before being closed. The actual maximum time depends 
              also on the IdleRemover scan time, which is 1/2 the smallest idle-timeout-minutes 
              of any pool. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="set-tx-query-timeout" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to set the query timeout based on the time remaining until 
              transaction timeout, any configured query timeout will be used if there is 
              no transaction. The default is false. e.g. <set-tx-query-timeout/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="query-timeout" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured query timeout in seconds The default is no timeout 
              e.g. 5 minutes <query-timeout>300</query-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-try-lock" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Any configured timeout for internal locks on the resource adapter 
              objects in seconds The default is a 60 second timeout e.g. 5 minutes <use-try-lock>300</use-try-lock>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry element indicates the number of times that allocating 
              a connection should be tried before throwing an exception. The default is 0.  
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allocation-retry-wait-millis" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The allocation retry wait millis element indicates the time in milliseconds 
              to wait between retrying to allocate a connection. The default is 5000 (5 seconds). 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="xa-resource-timeout" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Passed to XAResource.setTransactionTimeout() Default is zero which 
              does not invoke the setter. In seconds e.g. 5 minutes <xa-resource-timeout>300</xa-resource-timeout>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="track-statementsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
      <xs:enumeration value="nowarn" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="statementType">
    <xs:sequence>
      <xs:element name="track-statements" type="track-statementsType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to check for unclosed statements when a connection is returned 
              to the pool and result sets are closed when a statement is closed/return 
              to the prepared statement cache. valid values are: false - do not track statements 
              and results true - track statements and result sets and warn when they are 
              not closed nowarn - track statements but do no warn about them being unclosed 
              (the default) e.g. <track-statements>nowarn</track-statements>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prepared-statement-cache-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The number of prepared statements per connection in an LRU cache
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="share-prepared-statements" type="boolean-presenceType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to share prepare statements, i.e. whether asking for same 
              statement twice without closing uses the same underlying prepared statement. 
              The default is false. e.g. <share-prepared-statements/>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="poolType">
    <xs:sequence>
      <xs:element name="min-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The min-pool-size element indicates the minimum number of connections 
              a pool should hold. This default to 0. Ex: <min-pool-size>1</min-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="initial-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The initial-pool-size element indicates the initial number of connections 
              a pool should hold. This default to 0. Ex: <initial-pool-size>1</initial-pool-size>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="max-pool-size" type="xs:nonNegativeInteger" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The max-pool-size element indicates the maximum number of connections 
              for a pool. No more connections will be created in each sub-pool. 
              This defaults to 20. 
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="prefill" type="xs:boolean" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Whether to attempt to prefill the connection pool. Empty element denotes 
              a true value. e.g. <prefill>true</prefill>.
              Default is false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="use-strict-min" type="xs:boolean" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Define if the min-pool-size should be considered strictly.
              Default false
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="flush-strategy" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies how the pool should be flush in case of an error.
              Valid values are: FailingConnectionOnly (default), InvalidIdleConnections, IdleConnections, Gracefully, EntirePool,
                                AllInvalidIdleConnections, AllIdleConnections, AllGracefully, AllConnections
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="allow-multiple-users" type="boolean-presenceType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies if multiple users will access the datasource through the getConnection(user, password)
              method and hence if the internal pool type should account for that
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="capacity" type="capacityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the capacity policies for the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="connection-listener" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              An org.jboss.jca.adapters.jdbc.spi.listener.ConnectionListener that provides 
              a possible to listen for connection activation and passivation in order to
              perform actions before the connection is returned to the application or returned
              to the pool. Ex:
              <connection-listener class-name="com.acme.jdbc.OracleConnectionListener"/>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="xa-poolType">
    <xs:complexContent>
      <xs:extension base="poolType">
        <xs:sequence>
          <xs:element name="is-same-rm-override" type="xs:boolean" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  The is-same-rm-override element allows one to unconditionally 
                  set whether the javax.transaction.xa.XAResource.isSameRM(XAResource) returns 
                  true or false. Ex: <is-same-rm-override>true</is-same-rm-override>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="interleaving" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  An element to enable interleaving for XA connection factories 
                  Ex: <interleaving/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="no-tx-separate-pools" type="boolean-presenceType" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                  Oracle does not like XA connections getting used both inside and outside a JTA transaction. 
                  To workaround the problem you can create separate sub-pools for the different contexts
                  using <no-tx-separate-pools/>
                  Ex: <no-tx-separate-pools/>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="pad-xid" type="xs:boolean" default="false" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the Xid be padded
                   Ex: <pad-xid>true</pad-xid>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
          <xs:element name="wrap-xa-resource" type="xs:boolean" default="true" minOccurs="0">
            <xs:annotation>
              <xs:documentation>
                <![CDATA[[
                   Should the XAResource instances be wrapped in a org.jboss.tm.XAResourceWrapper
                   instance
                   Ex: <wrap-xa-resource>true</wrap-xa-resource>
                 ]]>
              </xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="dsSecurityType">
    <xs:sequence>
      <xs:element name="user-name" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the username used when creating a new connection. 
                Ex: <user-name>sa</user-name>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="password" type="xs:token" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
                Specify the password used when creating a new connection. 
                Ex: <password>sa-pass</password>
               ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="security-domain" type="xs:token" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Indicates Subject (from security domain) are used to distinguish connections in the pool. 
              The content of the security-domain is the name of the JAAS security manager that will handle
              authentication. This name correlates to the JAAS login-config.xml descriptor
              application-policy/name attribute.
              Ex:
              <security-domain>HsqlDbRealm</security-domain>
            ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="reauth-plugin" type="extensionType" minOccurs="0" maxOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="extensionType">
    <xs:sequence>
      <xs:element name="config-property" type="config-propertyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
    </xs:sequence>
    <xs:attribute name="class-name" type="xs:token" use="required"></xs:attribute>
  </xs:complexType>

  <xs:complexType name="config-propertyType" mixed="true">
    <xs:annotation>
      <xs:documentation>
        <![CDATA[[
          Specifies a Java bean property value
         ]]>
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute use="required" name="name" type="xs:token">
          <xs:annotation>
            <xs:documentation>
              <![CDATA[[
                Specifies the name of the config-property
               ]]>
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="recoverType">
    <xs:sequence>
      <xs:element name="recover-credential" type="dsSecurityType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the security options used when creating a connection during recovery.
              Note: if this credential are not specified the security credential are used for recover too
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="recover-plugin" type="extensionType" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Specifies the extension plugin used in spi (core.spi.xa) 
              which can be implemented by various plugins to provide better feedback to the XA recovery system.
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="no-recovery" type="xs:boolean" default="false" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specify if the xa-datasource should be excluded from recovery.
            Default false.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driverType">
    <xs:sequence>
      <xs:element name="driver-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              The fully qualifed name of the JDBC driver class Ex: <driver-class>org.hsqldb.jdbcDriver</driver-class>
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.DataSource implementation 
              class.
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
      <xs:element name="xa-datasource-class" type="xs:token" maxOccurs="1" minOccurs="0">
      <xs:annotation>
          <xs:documentation>
           <![CDATA[[
              The fully qualifed name of the javax.sql.XADataSource implementation 
              class. Ex: <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
             ]]>
          </xs:documentation>
        </xs:annotation></xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:token" use="required">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the symbolic name of this driver used to reference this driver
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="module" type="xs:token" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the name of AS7 module providing this driver.
            Thios tag is not used in IronJacamar standalone container.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="major-version" type="xs:int" use="optional">
      <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the major version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="minor-verion" type="xs:int" use="optional">
    <xs:annotation>
        <xs:documentation>
          <![CDATA[[
            Specifies the minor version of this driver. If the major and minor version is obmitted the fist availabe
            Driver in module will be used.
           ]]>
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="driversType">
    <xs:sequence>
      <xs:element name="driver" type="driverType" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="capacityType">
    <xs:sequence>
      <xs:element name="incrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for incrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="decrementer" type="extensionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            <![CDATA[[
              Defines the policy for decrementing connections in the pool
             ]]>
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>