<?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="5.0">
  <xsd:annotation>
    <xsd:documentation> @(#)jboss_5_0.xsds 1.00 1/26/06 </xsd:documentation>
  </xsd:annotation>

  <xsd:annotation>
    <xsd:documentation> JBoss, Home of Professional Open Source Copyright 2005, JBoss Inc., and
      individual contributors as indicated by the @authors tag. See the copyright.txt in the
      distribution for a full listing of individual contributors. This is free software; you can
      redistribute it and/or modify it under the terms of the GNU Lesser General Public License as
      published by the Free Software Foundation; either version 2.1 of the License, or (at your
      option) any later version. This software is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
      A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should
      have received a copy of the GNU Lesser General Public License along with this software; if
      not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
      02110-1301 USA, or see the FSF site: http://www.fsf.org. </xsd:documentation>
  </xsd:annotation>

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

	This is the XML Schema for the JBoss 5.0 deployment descriptor.
	The deployment descriptor must be named "META-INF/jboss.xml" in
	the EJB's jar file.  All EJB deployment descriptors must indicate
	the JBoss schema by using the Java EE namespace:

	http://www.jboss.org/j2ee/schema

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

	    <jboss xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.jboss.org/j2ee/schema
                            http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
             version="5.0">
	       ...
		 </jboss>

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

	http://www.jboss.org/j2ee/schema/jboss_5_0.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="http://java.sun.com/xml/ns/javaee/javaee_5.xsd"/>


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

  <xsd:element name="jboss" type="javaee:jbossType">
    <xsd:annotation>
      <xsd:documentation> This is the root of the ejb-jar deployment descriptor.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:key name="ejb-name-key">
      <xsd:annotation>
        <xsd:documentation> The ejb-name element contains the name of an enterprise bean. The name
          must be unique within the jboss file. </xsd:documentation>
      </xsd:annotation>
      <xsd:selector xpath="javaee:enterprise-beans/*"/>
      <xsd:field xpath="javaee:ejb-name"/>
    </xsd:key>
  </xsd:element>

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

  <xsd:complexType name="jbossType">
    <xsd:annotation>
      <xsd:documentation> The jboss element is the root element of the jboss.xml file. It contains
        all the information used by jboss but not described in the ejb-jar.xml file. All of it is
        optional. 1- the application assembler can define custom container configurations for the
        beans. Standard configurations are provided in standardjboss.xml 2- the deployer can
        override the jndi names under which the beans are deployed 3- the deployer can specify
        runtime jndi names for resource managers. </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:group ref="javaee:descriptionGroup"/>
      <xsd:element name="loader-repository" type="javaee:loader-repositoryType" minOccurs="0"/>
      <xsd:element name="jmx-name" type="javaee:jmx-nameType" minOccurs="0"/>
      <xsd:element name="security-domain" type="javaee:security-domainType" minOccurs="0"/>
      <xsd:element name="unauthenticated-principal" type="javaee:unauthenticated-principalType"
        minOccurs="0"/>
      <xsd:element name="enterprise-beans" type="javaee:enterprise-beansType" minOccurs="0"/>
      <xsd:element name="assembly-descriptor" type="javaee:assembly-descriptorType" minOccurs="0"/>
      <xsd:element name="resource-managers" type="javaee:resource-managersType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="version" type="javaee:dewey-versionType" fixed="3.0" use="required">
      <xsd:annotation>
        <xsd:documentation> The version specifies the version of the EJB specification that the
          instance document must comply with. This information enables deployment tools to validate
          a particular EJB Deployment Descriptor with respect to a specific version of the EJB
          schema. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="assembly-descriptorType">
    <xsd:annotation>
      <xsd:documentation> The assembly-descriptor element contains application-assembly information.
        The definition of security roles allows you to map assembly roles to one or more principals.
        For example, you may define a run-as principal in the security-identity element and include
        that principal in one or more security-role(s) in the assembly descriptor. When called with
        a run-as role, the callee will see all those roles in ctx.isCallerInRole(...) Used in: jboss
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="security-role" type="javaee:security-roleType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="message-destination" type="javaee:jboss-message-destinationType"
        minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="ejb-classType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[

	  The ejb-classType contains the fully-qualified name of the
	  enterprise bean's class. It is used by ejb-class elements.

	  Example:

	      <ejb-class>com.wombat.empl.EmployeeServiceBean</ejb-class>

	  ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:fully-qualified-classType"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="jmx-nameType">
    <xsd:annotation>
      <xsd:documentation> The jmx-name element allows one to specify the JMX ObjectName to use for
        the MBean associated with the ejb-jar module. This must be a unique name and valid JMX
        ObjectName string. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="security-domainType">
    <xsd:annotation>
      <xsd:documentation> The security-domain element specifies the JNDI name of the security
        manager that implements the EJBSecurityManager and RealmMapping for the domain. When
        specified at the jboss level it specifies the security domain for all j2ee components in the
        deployment unit. One can override the global security-domain at the container level using
        the security-domain element at the container-configuration level. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="unauthenticated-principalType">
    <xsd:annotation>
      <xsd:documentation> The unauthenticated-principal element specifies the name of the principal
        that will be returned by the EJBContext.getCallerPrincipal() method if there is no
        authenticated user. This Principal has no roles or privaledges to call any other beans.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="ejb-nameType">
    <xsd:annotation>
      <xsd:documentation> The ejb-name element gives the name of the bean, it must correspond to an
        ejb-name element in ejb-jar.xml Used in: entity, session, and message-driven
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdNMTOKENType"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="enterprise-beansType">
    <xsd:annotation>
      <xsd:documentation> The enterprise-beans element contains additional information about the
        beans. These informations, such as jndi names, resource managers and container
        configurations, are specific to jboss and not described in ejb-jar.xml. jboss will provide a
        standard behaviour if no enterprise-beans element is found, see container-configurations,
        jndi-name and resource-managers for defaults. Used in: jboss </xsd:documentation>
    </xsd:annotation>

    <xsd:choice maxOccurs="unbounded">
      <xsd:element name="session" type="javaee:session-beanType">
        <xsd:unique name="session-ejb-local-ref-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The ejb-ref-name element contains the name of an EJB reference. The
              EJB reference is an entry in the component's environment and is relative to the
              java:comp/env context. The name must be unique within the component. It is recommended
              that name be prefixed with "ejb/". </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:ejb-local-ref"/>
          <xsd:field xpath="javaee:ejb-ref-name"/>
        </xsd:unique>

        <xsd:unique name="session-ejb-ref-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The ejb-ref-name element contains the name of an EJB reference. The
              EJB reference is an entry in the component's environment and is relative to the
              java:comp/env context. The name must be unique within the component. It is recommended
              that name is prefixed with "ejb/". </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:ejb-ref"/>
          <xsd:field xpath="javaee:ejb-ref-name"/>
        </xsd:unique>

        <xsd:unique name="session-resource-env-ref-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The resource-env-ref-name element specifies the name of a resource
              environment reference; its value is the environment entry name used in the component
              code. The name is a JNDI name relative to the java:comp/env context and must be unique
              within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:resource-env-ref"/>
          <xsd:field xpath="javaee:resource-env-ref-name"/>
        </xsd:unique>

        <xsd:unique name="session-message-destination-ref-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The message-destination-ref-name element specifies the name of a
              message destination reference; its value is the message destination reference name
              used in the component code. The name is a JNDI name relative to the java:comp/env
              context and must be unique within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:message-destination-ref"/>
          <xsd:field xpath="javaee:message-destination-ref-name"/>
        </xsd:unique>

        <xsd:unique name="session-res-ref-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The res-ref-name element specifies the name of a resource manager
              connection factory reference. The name is a JNDI name relative to the java:comp/env
              context. The name must be unique within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:resource-ref"/>
          <xsd:field xpath="javaee:res-ref-name"/>
        </xsd:unique>

        <xsd:unique name="session-env-entry-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The env-entry-name element contains the name of a component's
              environment entry. The name is a JNDI name relative to the java:comp/env context. The
              name must be unique within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:env-entry"/>
          <xsd:field xpath="javaee:env-entry-name"/>
        </xsd:unique>
      </xsd:element>

      <xsd:element name="message-driven" type="javaee:message-driven-beanType">
        <xsd:unique name="messaged-ejb-local-ref-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The ejb-ref-name element contains the name of an EJB reference. The
              EJB reference is an entry in the component's environment and is relative to the
              java:comp/env context. The name must be unique within the component. It is recommended
              that name be prefixed with "ejb/". </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:ejb-local-ref"/>
          <xsd:field xpath="javaee:ejb-ref-name"/>
        </xsd:unique>

        <xsd:unique name="messaged-ejb-ref-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The ejb-ref-name element contains the name of an EJB reference. The
              EJB reference is an entry in the component's environment and is relative to the
              java:comp/env context. The name must be unique within the component. It is recommended
              that name is prefixed with "ejb/". </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:ejb-ref"/>
          <xsd:field xpath="javaee:ejb-ref-name"/>
        </xsd:unique>

        <xsd:unique name="messaged-resource-env-ref-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The resource-env-ref-name element specifies the name of a resource
              environment reference; its value is the environment entry name used in the component
              code. The name is a JNDI name relative to the java:comp/env context and must be unique
              within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:resource-env-ref"/>
          <xsd:field xpath="javaee:resource-env-ref-name"/>
        </xsd:unique>

        <xsd:unique name="messaged-message-destination-ref-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The message-destination-ref-name element specifies the name of a
              message destination reference; its value is the message destination reference name
              used in the component code. The name is a JNDI name relative to the java:comp/env
              context and must be unique within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:message-destination-ref"/>
          <xsd:field xpath="javaee:message-destination-ref-name"/>
        </xsd:unique>

        <xsd:unique name="messaged-res-ref-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The res-ref-name element specifies the name of a resource manager
              connection factory reference. The name is a JNDI name relative to the java:comp/env
              context. The name must be unique within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:resource-ref"/>
          <xsd:field xpath="javaee:res-ref-name"/>
        </xsd:unique>

        <xsd:unique name="messaged-env-entry-name-uniqueness">
          <xsd:annotation>
            <xsd:documentation> The env-entry-name element contains the name of a component's
              environment entry. The name is a JNDI name relative to the java:comp/env context. The
              name must be unique within an component. </xsd:documentation>
          </xsd:annotation>
          <xsd:selector xpath="javaee:env-entry"/>
          <xsd:field xpath="javaee:env-entry-name"/>
        </xsd:unique>
      </xsd:element>
      <xsd:element name="service" type="javaee:service-beanType"> </xsd:element>
      <xsd:element name="consumer" type="javaee:consumer-beanType"> </xsd:element>
    </xsd:choice>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="message-driven-beanType">
    <xsd:annotation>
      <xsd:documentation> The message-driven element holds information specific to jboss and not
        declared in ejb-jar.xml about a message-driven bean, such as container configuration and
        resources. The bean should already be declared in ejb-jar.xml, with the same ejb-name.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:group ref="javaee:descriptionGroup"/>
      <xsd:element name="ejb-name" type="javaee:ejb-nameType"/>
      <xsd:element name="destination-jndi-name" type="javaee:destination-jndi-nameType"
        minOccurs="0"/>
      <xsd:element name="local-jndi-name" type="javaee:local-jndi-nameType" minOccurs="0"/>
      <xsd:element name="mdb-user" type="javaee:mdb-userType" minOccurs="0"/>
      <xsd:element name="mdb-passwd" type="javaee:mdb-passwdType" minOccurs="0"/>
      <xsd:element name="mdb-client-id" type="javaee:mdb-client-idType" minOccurs="0"/>
      <xsd:element name="mdb-subscription-id" type="javaee:mdb-subscription-idType" minOccurs="0"/>
      <xsd:element name="resource-adapter-name" type="javaee:resource-adapter-nameType"
        minOccurs="0"/>
      <xsd:element name="ejb-ref" type="javaee:jboss-ejb-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="ejb-local-ref" type="javaee:jboss-ejb-local-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="service-ref" type="javaee:service-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="security-identity" type="javaee:security-identityType" minOccurs="0"/>
      <xsd:element name="resource-ref" type="javaee:jboss-resource-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="resource-env-ref" type="javaee:jboss-resource-env-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="message-destination-ref" type="javaee:jboss-message-destination-refType"
        minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="depends" type="javaee:dependsType" minOccurs="0"/>
      <xsd:element name="annotation" type="javaee:annotationType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="ignore-dependency" type="javaee:ignore-dependencyType" minOccurs="0"/>
      <xsd:element name="aop-domain-name" type="javaee:aop-domain-nameType" minOccurs="0"/>
      <xsd:element name="pool-config" type="javaee:pool-configType" minOccurs="0"/>
      <xsd:element name="jndi-ref" type="javaee:jndi-refType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="default-activation-config" type="javaee:default-activation-configType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="annotationType">
    <xsd:annotation>
      <xsd:documentation>
        
        The annotationType is used to add annotations to a bean class, 
        method, or field. 
        
      </xsd:documentation>
    </xsd:annotation>
    
    <xsd:sequence>
      <xsd:element name="description"
        type="javaee:descriptionType"
        minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="annotation-class"
        type="javaee:annotation-classType"/>
      <xsd:element name="annotation-implementation-class"
        type="javaee:annotation-classType"/>
      <xsd:element name="injection-target" type="javaee:injection-targetType" minOccurs="0"/>
      <xsd:element name="property" type="javaee:annotation-propertyType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="annotation-propertyType">
    <xsd:annotation>
      <xsd:documentation>
        
        Used to set property values for annotations
        
      </xsd:documentation>
    </xsd:annotation>
    
    <xsd:sequence>
      <xsd:element name="description"
        type="javaee:descriptionType"
        minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="property-name"
        type="javaee:string"/>
      <xsd:element name="property-value"
        type="javaee:string"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="annotation-classType">
    <xsd:annotation>
      <xsd:documentation>
        The class name of the annotation to be added to the bean.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:fully-qualified-classType"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="default-activation-configType">
    <xsd:annotation>
      <xsd:documentation>
        
        The activation-configType defines information about the
        default configuration properties of the message-driven bean
        in its operational environment. This may include information
        about message acknowledgement, message selector, expected
        destination type, etc.
        
        The configuration information is expressed in terms of
        name/value configuration properties.
        
        The properties that are recognized for a particular
        message-driven bean are determined by the messaging type.
        
      </xsd:documentation>
    </xsd:annotation>
    
    <xsd:sequence>
      <xsd:element name="description"
        type="javaee:descriptionType"
        minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="default-activation-config-property"
        type="javaee:default-activation-config-propertyType"
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="default-activation-config-propertyType">
    <xsd:annotation>
      <xsd:documentation>
        
        The activation-config-propertyType contains a name/value
        configuration property pair for a message-driven bean.
        
        The properties that are recognized for a particular
        message-driven bean are determined by the messaging type.
        
      </xsd:documentation>
    </xsd:annotation>
    
    <xsd:sequence>
      <xsd:element name="activation-config-property-name"
        type="javaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>
            
            The activation-config-property-name element contains
            the name for an activation configuration property of
            a message-driven bean.
            
            For JMS message-driven beans, the following property
            names are recognized: acknowledgeMode,
            messageSelector, destinationType, subscriptionDurability
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="activation-config-property-value"
        type="javaee:xsdStringType">
        <xsd:annotation>
          <xsd:documentation>
            
            The activation-config-property-value element
            contains the value for an activation configuration
            property of a message-driven bean.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="destination-jndi-nameType">
    <xsd:annotation>
      <xsd:documentation> The queue/topic jndi name from which we receive messages
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="mdb-userType">
    <xsd:annotation>
      <xsd:documentation> The optional user for the jms connection that delivers messages
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="mdb-passwdType">
    <xsd:annotation>
      <xsd:documentation> The optional password for the jms connection that delivers messages
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="mdb-client-idType">
    <xsd:annotation>
      <xsd:documentation> The optional client-id for the jms connection that delivers messages
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="mdb-subscription-idType">
    <xsd:annotation>
      <xsd:documentation> The subscription name for topic delivery </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="resource-adapter-nameType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[
      The name of the rar used in JCA 1.5 message inflow
e.g.
   <resource-adapter-name>jms-ra.rar</resource-adapter-name>
or for embedded rars
   <resource-adapter-name>myapp.ear#myconnector.rar</resource-adapter-name>
   ]]>
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-methodType">
    <xsd:annotation>
      <xsd:documentation> The method element is used to specify attributes for one method or all
        those matching a pattern startingstring*. </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="method-name" type="javaee:method-nameType"/>
      <xsd:element name="transaction-timeout" type="javaee:transaction-timeoutType" minOccurs="0"/>

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

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

  <xsd:complexType name="method-nameType">
    <xsd:annotation>
      <xsd:documentation> The method-name element specifies a complete method name or a pattern
        consisting of an initial match followed by '*' </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="transaction-timeoutType">
    <xsd:annotation>
      <xsd:documentation> The transaction timeout in seconds (overriding the default timeout). This
        will only work for Required (where the method starts the transaction) and RequiresNew. The
        special value of 0 (zero) uses the default timeout configured on
        jboss:service=TransactionManager NOTE: any subsequent use of RequiresNew that is not
        explicitly overridden will use this value. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="security-identityType">
    <xsd:annotation>
      <xsd:documentation> The security-identity element specifies whether a specific run-as identity
        is to be used. If there is a run-as role defined for an enterprise bean, there can also be a
        run-as-principal define here. If you don't define a run-as principal the callee will see
        ctx.getCallerPrincipal() == 'anonymous' Used in: entity, message-driven, session
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="run-as-principal" type="javaee:role-nameType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="consumer-beanType">
    <xsd:annotation>
      <xsd:documentation> The consumer element holds all of the information specific about a
        consumer bean which is a JBoss proprietary extension to EJB3 for sending JMS messages via
        standard Java interfaces. Used in: enterprise-beans </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="ejb-name" type="javaee:ejb-nameType"/>
      <xsd:element name="ejb-class" type="javaee:ejb-classType"/>
      <xsd:element name="message-destination" type="javaee:consumer-message-destinationType"/>
      <xsd:element name="message-destination-type" type="javaee:message-destination-typeType"/>
      <xsd:element name="producer" type="javaee:producerType" maxOccurs="unbounded"/>
      <xsd:element name="local-producer" type="javaee:producerType" maxOccurs="unbounded"/>
      <xsd:element name="current-message" type="javaee:current-messageType"/>
      <xsd:element name="message-properties" type="javaee:message-propertiesType"
        maxOccurs="unbounded"/>
      <xsd:element name="remote-binding" type="javaee:remote-bindingType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="jndi-name" type="javaee:jndi-nameType" minOccurs="0"/>
      <xsd:element name="local-jndi-name" type="javaee:local-jndi-nameType" minOccurs="0"/>
      <xsd:element name="ejb-ref" type="javaee:jboss-ejb-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="ejb-local-ref" type="javaee:jboss-ejb-local-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="security-identity" type="javaee:security-identityType" minOccurs="0"/>
      <xsd:element name="resource-ref" type="javaee:jboss-resource-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="resource-env-ref" type="javaee:jboss-resource-env-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="message-destination-ref" type="javaee:jboss-message-destination-refType"
        minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="security-domain" type="javaee:security-domainType" minOccurs="0"/>
      <xsd:element name="method-attributes" type="javaee:method-attributesType" minOccurs="0"/>
      <xsd:element name="depends" type="javaee:dependsType" minOccurs="0"/>
      <xsd:element name="annotation" type="javaee:annotationType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="ignore-dependency" type="javaee:ignore-dependencyType" minOccurs="0"/>
      <xsd:element name="aop-domain-name" type="javaee:aop-domain-nameType" minOccurs="0"/>
      <xsd:element name="pool-config" type="javaee:pool-configType" minOccurs="0"/>
      <xsd:element name="jndi-ref" type="javaee:jndi-refType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="consumer-message-destinationType">
    <xsd:annotation>
      <xsd:documentation> The jndi binding of the message destination </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="service-beanType">
    <xsd:annotation>
      <xsd:documentation> The service element holds all of the information specific about a service
        bean which is a JBoss proprietary extension to EJB3 creating multithreaded, singleton
        services. Service beans are the EJB3 analogy for JMX MBeans. </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="ejb-name" type="javaee:ejb-nameType"/>
      <xsd:element name="ejb-class" type="javaee:ejb-classType"/>
      <xsd:element name="object-name" type="javaee:jmx-nameType" minOccurs="0"/>
      <xsd:element name="local" type="javaee:localType" minOccurs="0"/>
      <xsd:element name="remote" type="javaee:remoteType" minOccurs="0"/>
      <xsd:element name="management" type="javaee:managementType"/>
      <xsd:element name="remote-binding" type="javaee:remote-bindingType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="jndi-name" type="javaee:jndi-nameType" minOccurs="0"/>
      <xsd:element name="local-jndi-name" type="javaee:local-jndi-nameType" minOccurs="0"/>
      <xsd:element name="ejb-ref" type="javaee:jboss-ejb-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="ejb-local-ref" type="javaee:jboss-ejb-local-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="security-identity" type="javaee:security-identityType" minOccurs="0"/>
      <xsd:element name="resource-ref" type="javaee:jboss-resource-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="resource-env-ref" type="javaee:jboss-resource-env-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="message-destination-ref" type="javaee:jboss-message-destination-refType"
        minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="security-domain" type="javaee:xsdStringType" minOccurs="0"/>
      <xsd:element name="method-attributes" type="javaee:method-attributesType" minOccurs="0"/>
      <xsd:element name="depends" type="javaee:xsdStringType" minOccurs="0"/>
      <xsd:element name="annotation" type="javaee:annotationType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="ignore-dependency" type="javaee:ignore-dependencyType" minOccurs="0"/>
      <xsd:element name="aop-domain-name" type="javaee:aop-domain-nameType" minOccurs="0"/>
      <xsd:element name="jndi-ref" type="javaee:jndi-refType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="managementType">
    <xsd:annotation>
      <xsd:documentation> The fully qualified class name for the JMX Management interface
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="producerType">
    <xsd:annotation>
      <xsd:documentation> The producer element holds all of the information specific about a
        producer interface for a consumer bean Used in: consumer </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="class" type="javaee:xsdStringType"/>
      <xsd:element name="connection-factory" type="javaee:xsdStringType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="current-messageType">
    <xsd:annotation>
      <xsd:documentation> Element for defining the method used as the injection point for the
        current JMS message in a consumer bean Used in: consumer </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="method" type="javaee:jboss-methodType" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="message-propertiesType">
    <xsd:annotation>
      <xsd:documentation> Element for defining JMS message properties (e.g. persistence, priority)
        for a consumer bean Used in: consumer </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="class" type="javaee:xsdStringType" minOccurs="0"/>
      <xsd:element name="method" type="javaee:jboss-methodType"/>
      <xsd:element name="delivery" type="javaee:xsdStringType" minOccurs="0"/>
      <xsd:element name="priority" type="javaee:xsdIntegerType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="session-beanType">
    <xsd:annotation>
      <xsd:documentation> The session element holds information specific to jboss and not declared
        in ejb-jar.xml about a session bean, such as jndi name, container configuration, and
        resource managers. (see tags for details) The bean should already be declared in
        ejb-jar.xml, with the same ejb-name. Used in: enterprise-beans </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="ejb-name" type="javaee:ejb-nameType"/>
      <xsd:element name="remote-binding" type="javaee:remote-bindingType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="jndi-name" type="javaee:jndi-nameType" minOccurs="0"/>
      <xsd:element name="local-jndi-name" type="javaee:local-jndi-nameType" minOccurs="0"/>
      <xsd:element name="ejb-ref" type="javaee:jboss-ejb-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="ejb-local-ref" type="javaee:jboss-ejb-local-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="service-ref" type="javaee:jboss-service-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="security-identity" type="javaee:security-identityType" minOccurs="0"/>
      <xsd:element name="resource-ref" type="javaee:jboss-resource-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="resource-env-ref" type="javaee:jboss-resource-env-refType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="message-destination-ref" type="javaee:jboss-message-destination-refType"
        minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="clustered" type="javaee:clusteredType" minOccurs="0"/>
      <xsd:element name="cluster-config" type="javaee:cluster-configType" minOccurs="0"/>
      <xsd:element name="security-domain" type="javaee:security-domainType" minOccurs="0"/>
      <xsd:element name="method-attributes" type="javaee:method-attributesType" minOccurs="0"/>
      <xsd:element name="depends" type="javaee:dependsType" minOccurs="0"/>
      <xsd:element name="annotation" type="javaee:annotationType" minOccurs="0"/>
      <xsd:element name="ignore-dependency" type="javaee:ignore-dependencyType" minOccurs="0"/>
      <xsd:element name="aop-domain-name" type="javaee:aop-domain-nameType" minOccurs="0"/>    
      <xsd:element name="cache-config" type="javaee:cache-configType" minOccurs="0"/>
      <xsd:element name="pool-config" type="javaee:pool-configType" minOccurs="0"/>
      <xsd:element name="concurrent" type="javaee:concurrentType" minOccurs="0"/>
      <xsd:element name="jndi-ref" type="javaee:jndi-refType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="jndi-refType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[
          Used to inject generic types based on JNDI name
	    ]]>
      </xsd:documentation>
    </xsd:annotation>
    
    <xsd:sequence>
      <xsd:element name="description"
        type="javaee:descriptionType"
        minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="jndi-ref-name"
        type="javaee:jndi-nameType">
        <xsd:annotation>
          <xsd:documentation>
            
            The jndi-ref-name element specifies the name of the
            reference. The name is a JNDI name relative to the
            java:comp/env context.
            The name must be unique within a Deployment File.
            
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      
      <xsd:group ref="javaee:resourceGroup"/>
      
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="concurrentType">
    <xsd:annotation>
      <xsd:documentation> Set on a stateful bean.  Instead of throwing an exception on concurrent access to the stateful bean,
        block/serialize access. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:true-falseType"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="pool-configType">
    <xsd:annotation>
      <xsd:documentation>Element for specifying the class used to provide the caching mechanism for a bean,
        and the cache parameters
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="pool-class" type="javaee:pool-classType" minOccurs="0"/>
      <xsd:element name="pool-max-size" type="javaee:pool-max-sizeType" minOccurs="0"/>
      <xsd:element name="pool-timeout" type="javaee:pool-timeoutType" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="pool-classType">
    <xsd:annotation>
      <xsd:documentation>The class of the pool</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="pool-max-sizeType">
    <xsd:annotation>
      <xsd:documentation>Maximum size of the pool</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdIntegerType"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="pool-timeoutType">
    <xsd:annotation>
      <xsd:documentation>Seconds before an pool thread times out</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdIntegerType"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="cache-configType">
    <xsd:annotation>
      <xsd:documentation>Element for specifying the class used to provide the caching mechanism for a bean,
        and the cache parameters
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="cache-class" type="javaee:cache-classType" minOccurs="0"/>
      <xsd:element name="cache-max-size" type="javaee:cache-max-sizeType" minOccurs="0"/>
      <xsd:element name="idle-timeout-seconds" type="javaee:idle-timeout-secondsType" minOccurs="0"/>
      <xsd:element name="cache-name" type="javaee:cache-nameType" minOccurs="0"/>
      <xsd:element name="persistence-manager" type="javaee:persistence-managerType" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="persistence-managerType">
    <xsd:annotation>
      <xsd:documentation>The class of the persistence manager for the simple cache</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="cache-classType">
    <xsd:annotation>
      <xsd:documentation>The class of the cache</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="cache-max-sizeType">
    <xsd:annotation>
      <xsd:documentation>Maximum cache entries before entry(s) are evicted</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdIntegerType"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="idle-timeout-secondsType">
    <xsd:annotation>
      <xsd:documentation>Seconds before an idle entry is evicted</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:xsdIntegerType"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="cache-nameType">
    <xsd:annotation>
      <xsd:documentation>The JMX MBean name of the tree cache</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="dependsType">
    <xsd:annotation>
      <xsd:documentation> The depends element gives a JMX ObjectName of a service on which the
        container or ejb depends. (default) </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->

  <xsd:complexType name="proxy-factoryType">
    <xsd:annotation>
      <xsd:documentation> The fully qualified name of the proxy factory class</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->

  <xsd:complexType name="interceptor-stackType">
    <xsd:annotation>
      <xsd:documentation>Name of the AOP client interceptor stack</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  <xsd:complexType name="ignore-dependencyType">
    <xsd:annotation>
      <xsd:documentation> The ignore-dependency element removes an injection dependency</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="injection-target" type="javaee:injection-targetType"/> 
    </xsd:sequence> 
  </xsd:complexType>
  
  <!-- **************************************************** -->

  <xsd:complexType name="aop-domain-nameType">
    <xsd:annotation>
      <xsd:documentation>Element for specifying the aspect domain for a bean. The aspect domain contains the interceptor stack and bindings (default) </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="clusteredType">
    <xsd:annotation>
      <xsd:documentation> The clustered element indicates if this bean will run in a cluster of
        JBoss instances. It is provided by the deployer. If not, jboss will assume clustered = False
        Possible values: "True", "False" (default) </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:true-falseType"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="local-jndi-nameType">
    <xsd:annotation>
      <xsd:documentation> The JNDI name under with the local interface should be bound. If it is not
        provided jboss will assume "jndi-name" = "beanClass/local" </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="remote-bindingType">
    <xsd:annotation>
      <xsd:documentation>Element for specifying the remote jndi binding for a bean as well
        as the client interceptor stack
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="jndi-name" type="javaee:jndi-nameType" minOccurs="0"/>
      <xsd:element name="client-bind-url" type="javaee:client-bind-urlType" minOccurs="0"/>
      <xsd:element name="interceptor-stack" type="javaee:interceptor-stackType" minOccurs="0"/>
      <xsd:element name="proxy-factory" type="javaee:proxy-factoryType" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- **************************************************** -->
  
  <xsd:complexType name="client-bind-urlType">
    <xsd:annotation>
      <xsd:documentation>The JBoss Remoting URL that clients will try and bind to.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-ejb-refType">
    <xsd:annotation>
      <xsd:documentation> The ejb-ref element is used to give the jndi-name of an external ejb
        reference. In the case of an external ejb reference, you don't provide a ejb-link element in
        ejb-jar.xml, but you provide a jndi-name in jboss.xml Used in: entity, session,
        message-driven, consumer, and service </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description" type="javaee:descriptionType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="ejb-ref-name" type="javaee:ejb-ref-nameType" minOccurs="0"/>
      <xsd:element name="ejb-ref-type" type="javaee:ejb-ref-typeType" minOccurs="0"/>
      <xsd:element name="home" type="javaee:homeType" minOccurs="0"/>
      <xsd:element name="remote" type="javaee:remoteType" minOccurs="0"/>
      <xsd:element name="ejb-link" type="javaee:ejb-linkType" minOccurs="0"/>
      <xsd:group ref="javaee:resourceGroup"/>
      <xsd:element name="jndi-name" type="javaee:jndi-nameType" minOccurs="0"/>
      <xsd:element name="ignore-dependency" type="javaee:emptyType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-ejb-local-refType">
    <xsd:annotation>
      <xsd:documentation> The ejb-local-ref element is used to give the jndi-name of an external ejb
        reference. In the case of an external ejb reference, you don't provide a ejb-link element in
        ejb-jar.xml, but you provide a jndi-name in jboss.xml </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description" type="javaee:descriptionType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="ejb-ref-name" type="javaee:ejb-ref-nameType" minOccurs="0"/>
      <xsd:element name="ejb-ref-type" type="javaee:ejb-ref-typeType" minOccurs="0"/>
      <xsd:element name="local-home" type="javaee:local-homeType" minOccurs="0"/>
      <xsd:element name="local" type="javaee:localType" minOccurs="0"/>
      <xsd:element name="ejb-link" type="javaee:ejb-linkType" minOccurs="0"/>
      <xsd:group ref="javaee:resourceGroup"/>
      <xsd:element name="local-jndi-name" type="javaee:local-jndi-nameType" minOccurs="0"/>
      <xsd:element name="ignore-dependency" type="javaee:emptyType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-message-destinationType">
    <xsd:annotation>
      <xsd:documentation> The message-destination element is used to configure the jndi-name for a
        message-destination in ejb-jar.xml Used in: assembly-descriptor </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="message-destination-name" type="javaee:xsdStringType"/>
      <xsd:element name="jndi-name" type="javaee:xsdStringType"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-message-destination-refType">
    <xsd:annotation>
      <xsd:documentation> The message-destination-ref element is used to configure the jndi-name for
        a message-destination-ref in ejb-jar.xml </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="message-destination-ref-name" type="javaee:jndi-nameType">
        <xsd:annotation>
          <xsd:documentation> The message-destination-ref-name element specifies the name of a
            message destination reference; its value is the environment entry name used in
            Deployment Component code. The name is a JNDI name relative to the java:comp/env context
            and must be unique within an ejb-jar (for enterprise beans) or a Deployment File (for
            others). </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="message-destination-type" type="javaee:message-destination-typeType"
        minOccurs="0"/>
      <xsd:element name="message-destination-usage" type="javaee:message-destination-usageType"
        minOccurs="0"/>
      <xsd:element name="message-destination-link" type="javaee:message-destination-linkType"
        minOccurs="0"/>

      <xsd:group ref="javaee:resourceGroup"/>

      <xsd:element name="jndi-name" type="javaee:xsdStringType"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="message-destination-ref-nameType">
    <xsd:annotation>
      <xsd:documentation> The message-destination-ref-name element identifies the
        message-destination-ref. It must match the name in ejb-jar.xml </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-resource-env-refType">
    <xsd:annotation>
      <xsd:documentation> The resource-env-ref element gives a mapping between the "code name" of a
        env resource (res-ref-name, provided by the Bean Developer) and its deployed JNDI name.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description" type="javaee:descriptionType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="resource-env-ref-name" type="javaee:jndi-nameType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation> The resource-env-ref-name element specifies the name of a resource
            environment reference; its value is the environment entry name used in the Deployment
            Component code. The name is a JNDI name relative to the java:comp/env context and must
            be unique within a Deployment Component. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="resource-env-ref-type" type="javaee:fully-qualified-classType"
        minOccurs="0">
        <xsd:annotation>
          <xsd:documentation> The resource-env-ref-type element specifies the type of a resource
            environment reference. It is the fully qualified name of a Java language class or
            interface. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="jndi-name" type="javaee:jndi-nameType"/>

      <xsd:group ref="javaee:resourceGroup"/>
    </xsd:sequence>

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

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

  <xsd:complexType name="resource-env-ref-nameType">
    <xsd:annotation>
      <xsd:documentation> The resource-env-ref-name element gives the "code name" of a resource. It
        is provided by the Bean Developer. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

  <!-- **************************************************** -->
  <xsd:complexType name="jboss-resource-refType">
    <xsd:annotation>
      <xsd:documentation> The resource-ref element gives a mapping between the "code name" of a
        resource (res-ref-name, provided by the Bean Developer) and its "xml name" (resource-name,
        provided by the Application Assembler). If no resource-ref is provided, jboss will assume
        that "xml-name" = "code name" See resource-managers. </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="description" type="javaee:descriptionType" minOccurs="0"
        maxOccurs="unbounded"/>
      <xsd:element name="res-ref-name" type="javaee:jndi-nameType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation> The res-ref-name element specifies the name of a resource manager
            connection factory reference. The name is a JNDI name relative to the java:comp/env
            context. The name must be unique within a Deployment File. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="res-type" type="javaee:fully-qualified-classType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation> The res-type element specifies the type of the data source. The type
            is specified by the fully qualified Java language class or interface expected to be
            implemented by the data source. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>

      <xsd:element name="res-auth" type="javaee:res-authType" minOccurs="0"/>

      <xsd:element name="res-sharing-scope" type="javaee:res-sharing-scopeType" minOccurs="0"/>

      <xsd:choice>
        <xsd:element name="resource-name" type="javaee:xsdStringType"/>
        <xsd:element name="jndi-name" type="javaee:xsdStringType"/>
        <xsd:element name="mapped-name" type="javaee:xsdStringType"/>
      </xsd:choice>

      <xsd:group ref="javaee:resourceGroup"/>

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

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

  <xsd:complexType name="res-ref-nameType">
    <xsd:annotation>
      <xsd:documentation> The res-ref-name element gives the "code name" of a resource. It is
        provided by the Bean Developer. See resource-managers for the actual configuration of the
        resource. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="resource-nameType">
    <xsd:annotation>
      <xsd:documentation> The resource-managers element is used to declare resource managers. A
        resource has 3 names: - the "code name" is the name used in the code of the bean, supplied
        by the Bean Developer in the resource-ref section of the ejb-jar.xml file - the "xml name"
        is an intermediary name used by the Application Assembler to identify resources in the XML
        file. - the "runtime jndi name" is the actual jndi-name or url of the deployed resource, it
        is supplied by the Deployer. The mapping between the "code name" and the "xml name" is given
        in the resource-ref section for the bean. If not, jboss will assume that "xml name" = "code
        name". The mapping between the "xml name" and the "runtime jndi name" is given in a
        resource-manager section. If not, and if the datasource is of type javax.sql.DataSource,
        jboss will look for a javax.sql.DataSource in the jndi tree. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="jboss-service-refType">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[
      The service-ref element provides jboss specific deployment values to
the web service reference in ejb-jar.xml.
Example:
    <service-ref>
        <service-ref-name>OrganizationService</service-ref-name>
        <wsdl-override>file:/wsdlRepository/organization-service.wsdl</wsdl-override>
    </service-ref>

    <service-ref>
        <service-ref-name>OrganizationService</service-ref-name>
        <config-name>Secure Client Config</config-name>
        <config-file>META-INF/jbossws-client-config.xml</config-file>
        <port-component-ref>
          <service-endpoint-interface>com.dot.SEI</service-endpoint-interface>
          <call-property>
            <prop-name>X</prop-name>
            <prop-value>Y</prop-value>
          </call-property>
        </port-component-ref>
    </service-ref> 
    ]]>
      </xsd:documentation>
    </xsd:annotation>

    <!--xsd:sequence>
      <xsd:element name="description" type="javaee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="service-ref-name" type="javaee:service-ref-nameType"/>
      <xsd:element name="config-name" type="javaee:config-nameType" minOccurs="0">
      <xsd:element name="config-file" type="javaee:config-fileType" minOccurs="0"/>
      <xsd:element name="res-sharing-scope" type="javaee:res-sharing-scopeType" minOccurs="0"/>
      <xsd:choice>
        <xsd:element name="resource-name" type="javaee:xsdStringType"/>
        <xsd:element name="jndi-name" type="javaee:xsdStringType"/>
        <xsd:element name="mapped-name" type="javaee:xsdStringType"/>
      </xsd:choice>

      <xsd:group ref="javaee:resourceGroup"/>
    </xsd:sequence-->
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="service-ref-nameType">
    <xsd:annotation>
      <xsd:documentation> The service-ref-name element gives the ENC relative name used in the
        ejb-jar.xml service-ref-name element. </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="resource-managersType">
    <xsd:annotation>
      <xsd:documentation> The resource-managers element is used to declare resource managers. A
        resource has 3 names: - the "code name" is the name used in the code of the bean, supplied
        by the Bean Developer in the resource-ref section of the ejb-jar.xml file - the "xml name"
        is an intermediary name used by the Application Assembler to identify resources in the XML
        file. - the "runtime jndi name" is the actual jndi-name or url of the deployed resource, it
        is supplied by the Deployer. The mapping between the "code name" and the "xml name" is given
        in the resource-ref section for the bean. If not, jboss will assume that "xml name" = "code
        name". The mapping between the "xml name" and the "runtime jndi name" is given in a
        resource-manager section. If not, and if the datasource is of type javax.sql.DataSource,
        jboss will look for a javax.sql.DataSource in the jndi tree. Used in: jboss
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="resource-manager" type="javaee:resource-managerType" minOccurs="0"
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="resource-managerType">
    <xsd:annotation>
      <xsd:documentation> The resource-manager element is used to provide a mapping between the "xml
        name" of a resource (res-name) and its "runtime jndi name" (res-jndi-name or res-url
        according to the type of the resource). If it is not provided, and if the type of the
        resource is javax.sql.DataSource, jboss will look for a javax.sql.DataSource in the jndi
        tree. See resource-managers. Used in: resource-managers </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="res-name" type="javaee:xsdStringType"/>
      <xsd:choice>
        <xsd:element name="res-jndi-name" type="javaee:xsdStringType"/>
        <xsd:element name="res-url" type="javaee:xsdStringType"/>
      </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
    <xsd:attribute name="res-class" type="xsd:string"/>
  </xsd:complexType>

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

  <xsd:complexType name="cluster-configType">
    <xsd:annotation>
      <xsd:documentation> The cluster-config element allows to specify cluster specific settings.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="partition-name" type="javaee:partition-nameType" minOccurs="0"/>
      <xsd:element name="load-balance-policy" type="javaee:load-balance-policyType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

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

  <xsd:complexType name="partition-nameType">
    <xsd:annotation>
      <xsd:documentation> The partition-name element indicates the name of the HAPartition to be
        used by the container to exchange clustering information. This is a name and *not* a JNDI
        name. Given name will be prefixed by "/HASessionState/" by the container to get the actual
        JNDI name of the HAPartition. If not, jboss will assume partition-name = "DefaultPartition".
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="load-balance-policyType">
    <xsd:annotation>
      <xsd:documentation> The home-load-balance-policy element indicates the java class name to be
        used to load balance calls in the home proxy. If not, jboss will assume
        home-load-balance-policy = "org.jboss.ha.framework.interfaces.RoundRobin".
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:restriction base="javaee:string"/>
    </xsd:simpleContent>
  </xsd:complexType>

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

  <xsd:complexType name="loader-repositoryType" mixed="true">
    <xsd:annotation>
      <xsd:documentation>
        <![CDATA[
      The loader-repository specifies the name of the UnifiedLoaderRepository
   MBean to use for the ear to provide ear level scoping of classes deployed
   in the ear. It is a unique JMX ObjectName string. It may also specify
   an arbitrary configuration by including a loader-repository-config element.

Examples:
   <loader-repository>jboss.test:loader=cts-cmp2v1-sar.ear</loader-repository>

   <loader-repository loaderRepositoryClass='dot.com.LoaderRepository'>
      dot.com:loader=unique-archive-name
      <loader-repository-config configParserClass='dot.com.LoaderParser'>
         java2ParentDelegaton=true
      </loader-repository-config>
   </loader-repository>
        </loader-repository>
        ]]>
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="loader-repository-config" type="javaee:loader-repository-configType"
        minOccurs="0" maxOccurs="unbounded"/>

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

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

  <xsd:complexType name="loader-repository-configType" mixed="true">
    <xsd:annotation>
      <xsd:documentation> The loader-repository-config element specifies any arbitrary configuration
        fragment for use in configuring the loader-repository instance. The actual content of this
        element is specific to the loaderRepositoryClass and the code parsing the element.
      </xsd:documentation>
    </xsd:annotation>

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


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

  <xsd:complexType name="method-attributesType">
    <xsd:annotation>
      <xsd:documentation> The method-attributes element can be used to specify which methods are
        read only or idempotent. This is used to reduce the need for locks and replication.
      </xsd:documentation>
    </xsd:annotation>

    <xsd:sequence>
      <xsd:element name="method" type="javaee:jboss-methodType" minOccurs="0" maxOccurs="unbounded"
      />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>

</xsd:schema>
