<?xml version="1.0" encoding="UTF-8"?>
<!--
  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 EJB 2.0 deployment descriptor.
  All EJB 2.0 deployment descriptors must include a DOCTYPE
  of the following form:
  
    <!DOCTYPE ejb-jar PUBLIC
  	"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
  	"http://java.sun.com/dtd/ejb-jar_2_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 ejb-jar element is the root element of the EJB deployment
  descriptor. It contains
  
  	- an optional description of the ejb-jar file
  	- an optional display name
  	- an optional small icon file name
  	- an optional large icon file name
  	- mandatory structural information about all included
  	  enterprise beans
  	- a descriptor for container managed relationships, if any
  	- an optional application-assembly descriptor
  	- an optional name of an ejb-client-jar file for the ejb-jar.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="ejb-jar">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element minOccurs="0" ref="display-name"/>
        <xs:element minOccurs="0" ref="small-icon"/>
        <xs:element minOccurs="0" ref="large-icon"/>
        <xs:element ref="enterprise-beans"/>
        <xs:element minOccurs="0" ref="relationships"/>
        <xs:element minOccurs="0" ref="assembly-descriptor"/>
        <xs:element minOccurs="0" ref="ejb-client-jar"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The abstract-schema-name element specifies the name of the abstract
    schema type of an entity bean with cmp-version 2.x. It is used in EJB
    QL queries.
    
    For example, the abstract-schema-name for an entity bean whose local
    interface is com.acme.commerce.Order might be Order.
    
    Used in: entity
  -->
  <xs:element name="abstract-schema-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The acknowledge-mode element specifies whether JMS AUTO_ACKNOWLEDGE or
    DUPS_OK_ACKNOWLEDGE message acknowledgment semantics should be used
    for the onMessage message of a message-driven bean that uses bean
    managed transaction demarcation.
    
    The acknowledge-mode element must be one of the two following:
    
    	<acknowledge-mode>Auto-acknowledge</acknowledge-mode>
    	<acknowledge-mode>Dups-ok-acknowledge</acknowledgemode>
    
    Used in: message-driven
  -->
  <xs:element name="acknowledge-mode">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The assembly-descriptor element contains application-assembly information.
    
    The application-assembly information consists of the following parts:
    the definition of security roles, the definition of method
    permissions, the definition of transaction attributes for
    enterprise beans with container-managed transaction demarcation and
    a list of methods to be excluded from being invoked.
    
    All the parts are optional in the sense that they are omitted if the
    lists represented by them are empty.
    
    Providing an assembly-descriptor in the deployment descriptor is
    optional for the ejb-jar file producer.
    
    Used in: ejb-jar
  -->
  <xs:element name="assembly-descriptor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="security-role"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="method-permission"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="container-transaction"/>
        <xs:element minOccurs="0" ref="exclude-list"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The cascade-delete element specifies that, within a particular
    relationship, the lifetime of one or more entity beans is dependent
    upon the lifetime of another entity bean. The cascade-delete element
    can only be specified for an ejb-relationship-role element contained
    in an ejb-relation element in which the other ejb-relationship-role
    element specifies a multiplicity of One.
    
    Used in: ejb-relationship-role
  -->
  <xs:element name="cascade-delete">
    <xs:complexType>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The cmp-field element describes a container-managed field. The
    field element includes an optional description of the field, and the
    name of the field.
    
    Used in: entity
  -->
  <xs:element name="cmp-field">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="field-name"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The cmp-version element specifies the version of an entity bean
    with container-managed persistence.
    
    The cmp-version element must be one of the two following:
    
    	<cmp-version>1.x</cmp-version>
    	<cmp-version>2.x</cmp-version>
    
    The default value of the cmp-version element is 2.x.
    
    Used in: entity
  -->
  <xs:element name="cmp-version">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The cmr-field element describes the bean provider's view of a
    relationship. It consists of an optional description, and the name and
    the class type of a field in the source of a role of a
    relationship. The cmr-field-name element corresponds to the name used
    for the get and set accessor methods for the relationship. The
    cmr-field-type element is used only for collection-valued
    cmr-fields. It specifies the type of the collection that is used.
    
    Used in: ejb-relationship-role
  -->
  <xs:element name="cmr-field">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="cmr-field-name"/>
        <xs:element minOccurs="0" ref="cmr-field-type"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The cmr-field-name element specifies the name of a logical
    relationship field in the entity bean class. The name of the cmr-field
    must begin with a lowercase letter. This field is accessed by methods
    whose names consist of the name of the field specified by
    cmr-field-name in which the first letter is uppercased, prefixed by
    "get" or "set".
    
    Used in: cmr-field
  -->
  <xs:element name="cmr-field-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The cmr-field-type element specifies the class of a
    collection-valued logical relationship field in the entity bean
    class. The value of the cmr-field-type element must be either:
    java.util.Collection or java.util.Set.
    
    Used in: cmr-field
  -->
  <xs:element name="cmr-field-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The container-transaction element specifies how the container
    must manage transaction scopes for the enterprise bean's method
    invocations. The element consists of an optional description, a list
    of method elements, and a transaction attribute. The transaction
    attribute is to be applied to all the specified methods.
    
    Used in: assembly-descriptor
  -->
  <xs:element name="container-transaction">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element maxOccurs="unbounded" ref="method"/>
        <xs:element ref="trans-attribute"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The description element is used to provide text describing the parent
    element.  The description element should include any information that
    the enterprise bean ejb-jar file producer wants to provide to the consumer of
    the enterprise bean ejb-jar file (i.e., to the Deployer). Typically, the tools
    used by the enterprise bean ejb-jar file consumer will display the description
    when processing the parent element that contains the description.
    
    Used in: cmp-field, cmr-field, container-transaction, ejb-jar,
    ejb-local-ref, ejb-ref, ejb-relation, ejb-relationship-role, entity,
    env-entry, exclude-list, message-driven, method, method-permission,
    query, relationship-role-source, relationships, resource-env-ref,
    resource-ref, run-as, security-identity, security-role,
    security-role-ref, session
  -->
  <xs:element name="description">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The destination-type element specifies the type of the JMS
    destination. The type is specified by the Java interface expected to
    be implemented by the destination.
    
    The destination-type element must be one of the two following:
    
    <destination-type>javax.jms.Queue</destination-type>
    <destination-type>javax.jms.Topic</destination-type>
    
    Used in: message-driven-destination
  -->
  <xs:element name="destination-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    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: ejb-jar, entity, message-driven, session
    
    Example:
    
    <display-name>Employee Self Service</display-name>
  -->
  <xs:element name="display-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-class element contains the fully-qualified name of the
    enterprise bean's class.
    
    Used in: entity, message-driven, session
    
    Example:
    
    <ejb-class>com.wombat.empl.EmployeeServiceBean</ejb-class>
  -->
  <xs:element name="ejb-class">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The optional ejb-client-jar element specifies a JAR file that contains
    the class files necessary for a client program to access the
    enterprise beans in the ejb-jar file.
    
    Used in: ejb-jar
    
    Example:
    
    <ejb-client-jar>employee_service_client.jar</ejb-client-jar>
  -->
  <xs:element name="ejb-client-jar">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-link element is used in the ejb-ref or ejb-local-ref
    elements to specify that an EJB reference is linked to an
    enterprise bean.
    
    The value of the ejb-link element must be the ejb-name of an
    enterprise bean in the same ejb-jar file or in another ejb-jar
    file in the same J2EE application unit.
    
    Alternatively, the name in the ejb-link element may be composed of a
    path name specifying the ejb-jar containing the referenced enterprise
    bean with the ejb-name of the target bean appended and separated from
    the path name by "#".  The path name is relative to the ejb-jar file
    containing the enterprise bean that is referencing the enterprise bean.
    This allows multiple enterprise beans with the same ejb-name to be
    uniquely identified.
    
    Used in: ejb-local-ref, ejb-ref
    
    Examples:
    
    	<ejb-link>EmployeeRecord</ejb-link>
    
    	<ejb-link>../products/product.jar#ProductEJB</ejb-link>
    
  -->
  <xs:element name="ejb-link">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-local-ref element is used for the declaration of a reference to
    an enterprise bean's local home. The declaration consists of:
    
    	- an optional description
    	- the EJB reference name used in the code of the enterprise bean
    	  that's referencing the enterprise bean
    	- the expected type of the referenced enterprise bean
    	- the expected local home and local interfaces of the referenced
    	  enterprise bean
    	- optional ejb-link information, used to specify the referenced
    	  enterprise bean
    
    Used in: entity, message-driven, session
  -->
  <xs:element name="ejb-local-ref">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="ejb-ref-name"/>
        <xs:element ref="ejb-ref-type"/>
        <xs:element ref="local-home"/>
        <xs:element ref="local"/>
        <xs:element minOccurs="0" ref="ejb-link"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-name element specifies an enterprise bean's name. This name is
    assigned by the ejb-jar file producer to name the enterprise bean in
    the ejb-jar file's deployment descriptor. The name must be unique
    among the names of the enterprise beans in the same ejb-jar file.
    
    There is no architected relationship between the ejb-name in the
    deployment descriptor and the JNDI name that the Deployer will assign
    to the enterprise bean's home.
    
    The name for an entity bean with cmp-version 2.x must conform to the
    lexical rules for an NMTOKEN. The name for an entity bean with
    cmp-version 2.x must not be a reserved literal in EJB QL.
    
    Used in: entity, message-driven, method, relationship-role-source,
    session
    
    Example:
    
    <ejb-name>EmployeeService</ejb-name>
  -->
  <xs:element name="ejb-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-ql element contains the EJB QL query string that defines
    a finder or select query. This element is defined within the scope of
    a query element whose contents specify the finder or the select method
    that uses the query. The content must be a valid EJB QL query string
    for the entity bean for which the query is specified.
    
    The ejb-ql element must be specified for all queries that are
    expressible in EJB QL.
    
    Used in: query
    
    Example:
    <query>
        <query-method>
            <method-name>ejbSelectPendingLineitems</method-name>
            <method-params/>
        </query-method>
        <ejb-ql>SELECT OBJECT(l) FROM LineItems l WHERE l.shipped <> TRUE
        </ejb-ql>
    </query>
    
  -->
  <xs:element name="ejb-ql">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-ref element is used for the declaration of a reference to
    an enterprise bean's home. The declaration consists of:
    
    	- an optional description
    	- the EJB reference name used in the code of
    	  the enterprise bean that's referencing the enterprise bean
    	- the expected type of the referenced enterprise bean
    	- the expected home and remote interfaces of the referenced
    	  enterprise bean
    	- optional ejb-link information, used to specify the referenced
    	  enterprise bean
    
    Used in: entity, message-driven, session
  -->
  <xs:element name="ejb-ref">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="ejb-ref-name"/>
        <xs:element ref="ejb-ref-type"/>
        <xs:element ref="home"/>
        <xs:element ref="remote"/>
        <xs:element minOccurs="0" ref="ejb-link"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-ref-name element contains the name of an EJB reference. The
    EJB reference is an entry in the enterprise bean's environment and is
    relative to the java:comp/env context.  The name must be unique
    within the enterprise bean.
    
    It is recommended that name is prefixed with "ejb/".
    
    Used in: ejb-local-ref, ejb-ref
    
    Example:
    
    <ejb-ref-name>ejb/Payroll</ejb-ref-name>
  -->
  <xs:element name="ejb-ref-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-ref-type element contains the expected type of the
    referenced enterprise bean.
    
    The ejb-ref-type element must be one of the following:
    
    	<ejb-ref-type>Entity</ejb-ref-type>
    	<ejb-ref-type>Session</ejb-ref-type>
    
    Used in: ejb-local-ref, ejb-ref
  -->
  <xs:element name="ejb-ref-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The ejb-relation element describes a relationship between two
    entity beans with container-managed persistence.  An ejb-relation
    element contains a description; an optional ejb-relation-name element;
    and exactly two relationship role declarations, defined by the
    ejb-relationship-role elements. The name of the relationship, if
    specified, is unique within the ejb-jar file.
    
    Used in: relationships
  -->
  <xs:element name="ejb-relation">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element minOccurs="0" ref="ejb-relation-name"/>
        <xs:element ref="ejb-relationship-role"/>
        <xs:element ref="ejb-relationship-role"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-relation-name element provides a unique name for a relationship.
    
    Used in: ejb-relation
  -->
  <xs:element name="ejb-relation-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-relationship-role element describes a role within a
    relationship. There are two roles in each relationship.
    
    The ejb-relationship-role element contains an optional description; an
    optional name for the relationship role; a specification of the
    multiplicity of the role; an optional specification of cascade-delete
    functionality for the role; the role source; and a declaration of the
    cmr-field, if any, by means of which the other side of the
    relationship is accessed from the perspective of the role source.
    
    The multiplicity and role-source element are mandatory.
    
    The relationship-role-source element designates an entity bean by
    means of an ejb-name element. For bidirectional relationships, both
    roles of a relationship must declare a relationship-role-source
    element that specifies a cmr-field in terms of which the relationship
    is accessed. The lack of a cmr-field element in an
    ejb-relationship-role specifies that the relationship is
    unidirectional in navigability and the entity bean that participates
    in the relationship is "not aware" of the relationship.
    
    Used in: ejb-relation
    
    Example:
    
    <ejb-relation>
        <ejb-relation-name>Product-LineItem</ejb-relation-name>
        <ejb-relationship-role>
            <ejb-relationship-role-name>product-has-lineitems
            </ejb-relationship-role-name>
            <multiplicity>One</multiplicity>
            <relationship-role-source>
            <ejb-name>ProductEJB</ejb-name>
            </relationship-role-source>
         </ejb-relationship-role>
    
  -->
  <xs:element name="ejb-relationship-role">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element minOccurs="0" ref="ejb-relationship-role-name"/>
        <xs:element ref="multiplicity"/>
        <xs:element minOccurs="0" ref="cascade-delete"/>
        <xs:element ref="relationship-role-source"/>
        <xs:element minOccurs="0" ref="cmr-field"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The ejb-relationship-role-name element defines a name for a role that
    is unique within an ejb-relation. Different relationships can use the
    same name for a role.
    
    Used in: ejb-relationship-role
  -->
  <xs:element name="ejb-relationship-role-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The enterprise-beans element contains the declarations of one or more
    enterprise beans.
  -->
  <xs:element name="enterprise-beans">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="session"/>
        <xs:element ref="entity"/>
        <xs:element ref="message-driven"/>
      </xs:choice>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The entity element declares an entity bean. The declaration
    consists of:
    
    	- an optional description
    	- an optional display name
    	- an optional small icon file name
    	- an optional large icon file name
    	- a unique name assigned to the enterprise bean
    	  in the deployment descriptor
    	- the names of the entity bean's remote home and remote
    	  interfaces, if any
    	- the names of the entity bean's local home and local
    	  interfaces, if any
    	- the entity bean's implementation class
    	- the entity bean's persistence management type
    	- the entity bean's primary key class name
    	- an indication of the entity bean's reentrancy
    	- an optional specification of the entity bean's cmp-version
    	- an optional specification of the entity bean's abstract
    	  schema name
    	- an optional list of container-managed fields
    	- an optional specification of the primary key field
    	- an optional declaration of the bean's environment entries
    	- an optional declaration of the bean's EJB references
    	- an optional declaration of the bean's local EJB references
    	- an optional declaration of the security role references
    	- an optional declaration of the security identity
    	  to be used for the execution of the bean's methods
    	- an optional declaration of the bean's resource manager
    	  connection factory references
    	- an optional declaration of the bean's
    	  resource environment references
    	- an optional set of query declarations
    	  for finder and select methods for an entity
    	  bean with cmp-version 2.x.
    
    The optional abstract-schema-name element must be specified for an
    entity bean with container-managed persistence and cmp-version 2.x.
    
    The optional primkey-field may be present in the descriptor if the
    entity's persistence-type is Container.
    
    The optional cmp-version element may be present in the descriptor if
    the entity's persistence-type is Container. If the persistence-type is
    Container and the cmp-version element is not specified, its value
    defaults to 2.x.
    
    The optional home and remote elements must be specified if the entity
    bean cmp-version is 1.x.
    
    The optional home and remote elements must be specified if the entity
    bean has a remote home and remote interface.
    
    The optional local-home and local elements must be specified if the
    entity bean has a local home and local interface.
    
    Either both the local-home and the local elements or both the
    home and the remote elements must be specified.
    
    The optional query elements must be present if the persistence-type is
    Container and the cmp-version is 2.x and query methods other than
    findByPrimaryKey have been defined for the entity bean.
    
    The other elements that are optional are "optional" in the sense that
    they are omitted if the lists represented by them are empty.
    
    At least one cmp-field element must be present in the descriptor if
    the entity's persistence-type is Container and the cmp-version is 1.x,
    and none must not be present if the entity's persistence-type is Bean.
    
    Used in: enterprise-beans
    
  -->
  <xs:element name="entity">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element minOccurs="0" ref="display-name"/>
        <xs:element minOccurs="0" ref="small-icon"/>
        <xs:element minOccurs="0" ref="large-icon"/>
        <xs:element ref="ejb-name"/>
        <xs:element minOccurs="0" ref="home"/>
        <xs:element minOccurs="0" ref="remote"/>
        <xs:element minOccurs="0" ref="local-home"/>
        <xs:element minOccurs="0" ref="local"/>
        <xs:element ref="ejb-class"/>
        <xs:element ref="persistence-type"/>
        <xs:element ref="prim-key-class"/>
        <xs:element ref="reentrant"/>
        <xs:element minOccurs="0" ref="cmp-version"/>
        <xs:element minOccurs="0" ref="abstract-schema-name"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="cmp-field"/>
        <xs:element minOccurs="0" ref="primkey-field"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="env-entry"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ejb-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ejb-local-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="security-role-ref"/>
        <xs:element minOccurs="0" ref="security-identity"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-env-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="query"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The env-entry element contains the declaration of an enterprise bean's
    environment entry. The declaration consists of an optional
    description, the name of the environment entry, and an optional
    value.  If a value is not specified, one must be supplied
    during deployment.
    
    Used in: entity, message-driven, session
  -->
  <xs:element name="env-entry">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="env-entry-name"/>
        <xs:element ref="env-entry-type"/>
        <xs:element minOccurs="0" ref="env-entry-value"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The env-entry-name element contains the name of an enterprise bean's
    environment entry.  The name is a JNDI name relative to the
    java:comp/env context.  The name must be unique within an enterprise bean.
    
    Used in: env-entry
    
    Example:
    
    <env-entry-name>minAmount</env-entry-name>
  -->
  <xs:element name="env-entry-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The env-entry-type element contains the fully-qualified Java type of
    the environment entry value that is expected by the enterprise bean's
    code.
    
    The following are the legal values of env-entry-type:
    
    	java.lang.Boolean
    	java.lang.Byte
    	java.lang.Character
    	java.lang.String
    	java.lang.Short
    	java.lang.Integer
    	java.lang.Long
    	java.lang.Float
    	java.lang.Double
    
    
    Used in: env-entry
    
    Example:
    
    <env-entry-type>java.lang.Boolean</env-entry-type>
  -->
  <xs:element name="env-entry-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The env-entry-value element contains the value of an enterprise bean's
    environment entry. The value must be a String that is valid for the
    constructor of the specified type that takes a single String
    parameter, or for java.lang.Character, a single character.
    
    Used in: env-entry
    
    Example:
    
    <env-entry-value>100.00</env-entry-value>
  -->
  <xs:element name="env-entry-value">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The exclude list element specifies one or more methods which the
    Assembler marks to be uncallable.
    
    If the method permission relation contains methods that are in the
    exclude list, the Deployer should consider those methods to be
    uncallable.
    
    Used in: assembly-descriptor
  -->
  <xs:element name="exclude-list">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element maxOccurs="unbounded" ref="method"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The field-name element specifies the name of a container managed
    field.
    
    The name of the cmp-field of an entity bean with cmp-version 2.x must
    begin with a lowercase letter. This field is accessed by methods whose
    names consists of the name of the field specified by field-name in
    which the first letter is uppercased, prefixed by "get" or "set".
    
    The name of the cmp-field of an entity bean with cmp-version 1.x must
    denote a public field of the enterprise bean class or one of its
    superclasses.
    
    Used in: cmp-field
    
    Example:
    
    
    	<field-name>firstName</field-Name>
    
  -->
  <xs:element name="field-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The home element contains the fully-qualified name of the enterprise
    bean's home interface.
    
    Used in: ejb-ref, entity, session
    
    Example:
    
    <home>com.aardvark.payroll.PayrollHome</home>
  -->
  <xs:element name="home">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    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 enterprise bean's
    ejb-jar file.
    
    The image may be either in the JPEG or GIF format.
    The icon can be used by tools.
    
    Used in: ejb-jar, entity, message-driven, session
    
    Example:
    
    <large-icon>employee-service-icon32x32.jpg</large-icon>
  -->
  <xs:element name="large-icon">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The local element contains the fully-qualified name of the
    enterprise bean's local interface.
    
    Used in: ejb-local-ref, entity, session
    
  -->
  <xs:element name="local">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The local-home element contains the fully-qualified name of the
    enterprise bean's local home interface.
    
    Used in: ejb-local-ref, entity, session
  -->
  <xs:element name="local-home">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The message-driven element declares a message-driven bean. The
    declaration consists of:
    
    	- an optional description
    	- an optional display name
    	- an optional small icon file name
    	- an optional large icon file name
    	- a name assigned to the enterprise bean in
    	  the deployment descriptor
    	- the message-driven bean's implementation class
    	- the message-driven bean's transaction management type
    	- an optional declaration of the message-driven bean's
    	  message selector
    	- an optional declaration of the
    	  acknowledgment mode for the message-driven bean
    	  if bean-managed transaction demarcation is used
    	- an optional declaration of the
    	  intended destination type of the message-driven bean
    	- an optional declaration of the bean's environment entries
    	- an optional declaration of the bean's EJB references
    	- an optional declaration of the bean's local EJB references
    	- an optional declaration of the security
    	  identity to be used for the execution of the bean's methods
    	- an optional declaration of the bean's resource manager
    	  connection factory references
    	- an optional declaration of the bean's resource
    	  environment references.
    
    Used in: enterprise-beans
  -->
  <xs:element name="message-driven">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element minOccurs="0" ref="display-name"/>
        <xs:element minOccurs="0" ref="small-icon"/>
        <xs:element minOccurs="0" ref="large-icon"/>
        <xs:element ref="ejb-name"/>
        <xs:element ref="ejb-class"/>
        <xs:element ref="transaction-type"/>
        <xs:element minOccurs="0" ref="message-selector"/>
        <xs:element minOccurs="0" ref="acknowledge-mode"/>
        <xs:element minOccurs="0" ref="message-driven-destination"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="env-entry"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ejb-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ejb-local-ref"/>
        <xs:element minOccurs="0" ref="security-identity"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-env-ref"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The message-driven-destination element provides advice to the Deployer
    as to whether a message-driven bean is intended for a Queue or a
    Topic. The declaration consists of: the type of the message-driven
    bean's intended destination and an optional declaration of whether a
    durable or non-durable subscription should be used if the
    destination-type is javax.jms.Topic.
    
    Used in: message-driven
  -->
  <xs:element name="message-driven-destination">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="destination-type"/>
        <xs:element minOccurs="0" ref="subscription-durability"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The message-selector element is used to specify the JMS message
    selector to be used in determining which messages a message-driven
    bean is to receive.
    
    Example:
    <message-selector>JMSType = `car' AND color = `blue' AND weight &gt; 2500
    </message-selector>
    
    Used in: message-driven
  -->
  <xs:element name="message-selector">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The method element is used to denote a method of an enterprise
    bean's home or component interface, or, in the case of a message-driven
    bean, the bean's onMessage method, or a set of methods. The ejb-name
    element must be the name of one of the enterprise beans declared in
    the deployment descriptor; the optional method-intf element allows to
    distinguish between a method with the same signature that is multiply
    defined across in both the home and component interfaces; the
    method-name element specifies the method name; and the optional
    method-params elements identify a single method among multiple methods
    with an overloaded method name.
    
    There are three possible styles of the method element syntax:
    
    1.
    <method>
        <ejb-name>EJBNAME</ejb-name>
        <method-name>*</method-name>
    </method>
    
       This style is used to refer to all the methods of the specified
       enterprise bean's home and component interfaces.
    
    2.
    <method>
        <ejb-name>EJBNAME</ejb-name>
        <method-name>METHOD</method-name>
    </method>>
    
       This style is used to refer to the specified method of the
       specified enterprise bean. If there are multiple methods with
       the same overloaded name, the element of this style refers to
       all the methods with the overloaded name.
    
    
    3.
    <method>
        <ejb-name>EJBNAME</ejb-name>
        <method-name>METHOD</method-name>
        <method-params>
            <method-param>PARAM-1</method-param>
            <method-param>PARAM-2</method-param>
            ...
            <method-param>PARAM-n</method-param>
        </method-params>
    <method>
    
    
       This style is used to refer to a single method within a set of
       methods with an overloaded name. PARAM-1 through PARAM-n are the
       fully-qualified Java types of the method's input parameters (if
       the method has no input arguments, the method-params element
       contains no method-param elements). Arrays are specified by the
       array element's type, followed by one or more pair of square
       brackets (e.g. int[][]). If there are multiple methods with the
       same overloaded name, this style refers to all of the overloaded
       methods.
    
    
    Used in: container-transaction, exclude-list, method-permission
    
    Examples:
    
    Style 1: The following method element refers to all the methods of
    the EmployeeService bean's home and component interfaces:
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-name>*</method-name>
    </method>
    
    Style 2: The following method element refers to all the create
    methods of the EmployeeService bean's home interface(s).
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-name>create</method-name>
    </method>
    
    
    Style 3: The following method element refers to the
    create(String firstName, String LastName) method of the
    EmployeeService bean's home interface(s).
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-name>create</method-name>
        <method-params>
            <method-param>java.lang.String</method-param>
            <method-param>java.lang.String</method-param>
        </method-params>
    </method>
    
    
    The following example illustrates a Style 3 element with
    more complex parameter types. The method
    foobar(char s, int i, int[] iar, mypackage.MyClass mycl,
    mypackage.MyClass[][] myclaar) would be specified as:
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-name>foobar</method-name>
        <method-params>
            <method-param>char</method-param>
            <method-param>int</method-param>
            <method-param>int[]</method-param>
            <method-param>mypackage.MyClass</method-param>
            <method-param>mypackage.MyClass[][]</method-param>
        </method-params>
    </method>
    
    
    The optional method-intf element can be used when it becomes necessary
    to differentiate between a method that is multiply defined across the
    enterprise bean's home and component interfaces with the same name and
    signature.
    
    
    For example, the method element
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-intf>Remote</method-intf>
        <method-name>create</method-name>
        <method-params>
            <method-param>java.lang.String</method-param>
            <method-param>java.lang.String</method-param>
        </method-params>
    </method>
    
    
    can be used to differentiate the create(String, String) method defined
    in the remote interface from the create(String, String) method defined
    in the remote home interface, which would be defined as
    
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-intf>Home</method-intf>
        <method-name>create</method-name>
        <method-params>
            <method-param>java.lang.String</method-param>
            <method-param>java.lang.String</method-param>
        </method-params>
    </method>
    
    and the create method that is defined in the local home interface
    which would be defined as
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-intf>LocalHome</method-intf>
        <method-name>create</method-name>
        <method-params>
            <method-param>java.lang.String</method-param>
            <method-param>java.lang.String</method-param>
        </method-params>
    </method>
    
    
    The method-intf element can be used with all three Styles of the
    method element usage. For example, the following method element
    example could be used to refer to all the methods of the
    EmployeeService bean's remote home interface.
    
    
    <method>
        <ejb-name>EmployeeService</ejb-name>
        <method-intf>Home</method-intf>
        <method-name>*</method-name>
    </method>
    
  -->
  <xs:element name="method">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="ejb-name"/>
        <xs:element minOccurs="0" ref="method-intf"/>
        <xs:element ref="method-name"/>
        <xs:element minOccurs="0" ref="method-params"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The method-intf element allows a method element to differentiate
    between the methods with the same name and signature that are multiply
    defined across the component and home interfaces (e.g, in both an
    enterprise bean's remote and local interfaces; in both an enterprise bean's
    home and remote interfaces, etc.)
    
    The method-intf element must be one of the following:
    
    	<method-intf>Home</method-intf>
    	<method-intf>Remote</method-intf>
    	<method-intf>LocalHome</method-intf>
    	<method-intf>Local</method-intf>
    
    Used in: method
  -->
  <xs:element name="method-intf">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The method-name element contains a name of an enterprise bean method
    or the asterisk (*) character. The asterisk is used when the element
    denotes all the methods of an enterprise bean's component and home
    interfaces.
    
    Used in: method, query-method
  -->
  <xs:element name="method-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The method-param element contains the fully-qualified Java type name
    of a method parameter.
    
    Used in: method-params
  -->
  <xs:element name="method-param">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The method-params element contains a list of the fully-qualified Java
    type names of the method parameters.
    
    Used in: method, query-method
  -->
  <xs:element name="method-params">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="method-param"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The method-permission element specifies that one or more security
    roles are allowed to invoke one or more enterprise bean methods. The
    method-permission element consists of an optional description, a list
    of security role names or an indicator to state that the method is
    unchecked for authorization, and a list of method elements.
    
    The security roles used in the method-permission element must be
    defined in the security-role elements of the deployment descriptor,
    and the methods must be methods defined in the enterprise bean's
    component and/or home interfaces.
    
    
    Used in: assembly-descriptor
  -->
  <xs:element name="method-permission">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:choice>
          <xs:element maxOccurs="unbounded" ref="role-name"/>
          <xs:element ref="unchecked"/>
        </xs:choice>
        <xs:element maxOccurs="unbounded" ref="method"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The multiplicity element describes the multiplicity of the role that
    participates in a relation.
    
    The multiplicity element must be one of the two following:
    
    	<multiplicity>One</multiplicity>
    	<multiplicity>Many</multiplicity>
    
    Used in: ejb-relationship-role
  -->
  <xs:element name="multiplicity">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The persistence-type element specifies an entity bean's persistence
    management type.
    
    The persistence-type element must be one of the two following:
    
    	<persistence-type>Bean</persistence-type>
    	<persistence-type>Container</persistence-type>
    
    Used in: entity
  -->
  <xs:element name="persistence-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The prim-key-class element contains the fully-qualified name of an
    entity bean's primary key class.
    
    If the definition of the primary key class is deferred to deployment
    time, the prim-key-class element should specify java.lang.Object.
    
    Used in: entity
    
    Examples:
    
    	<prim-key-class>java.lang.String</prim-key-class>
    
    	<prim-key-class>com.wombat.empl.EmployeeID</prim-key-class>
    
    	<prim-key-class>java.lang.Object</prim-key-class>
    
  -->
  <xs:element name="prim-key-class">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The primkey-field element is used to specify the name of the primary
    key field for an entity with container-managed persistence.
    
    The primkey-field must be one of the fields declared in the cmp-field
    element, and the type of the field must be the same as the primary key
    type.
    
    The primkey-field element is not used if the primary key maps to
    multiple container-managed fields (i.e. the key is a compound key). In
    this case, the fields of the primary key class must be public, and
    their names must correspond to the field names of the entity bean
    class that comprise the key.
    
    Used in: entity
    
    Example:
    
    	<primkey-field>EmployeeId</primkey-field>
    
  -->
  <xs:element name="primkey-field">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The query element is used to specify a finder or select query. It
    contains
    	- an optional description of the query
    	- the specification of the finder or select
    	  method it is used by
    	- an optional specification of the result type mapping, if
    	  the query is for a select method and entity objects are
    	  returned.
    	- the EJB QL query string that defines the query.
    
    Queries that are expressible in EJB QL must use the ejb-ql element to
    specify the query. If a query is not expressible in EJB QL, the
    description element should be used to describe the semantics of the
    query and the ejb-ql element should be empty.
    
    The result-type-mapping is an optional element. It can only be present
    if the query-method specifies a select method that returns entity
    objects.  The default value for the result-type-mapping element is
    "Local".
    
    
    Used in: entity
  -->
  <xs:element name="query">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="query-method"/>
        <xs:element minOccurs="0" ref="result-type-mapping"/>
        <xs:element ref="ejb-ql"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The query-method element is used to specify the method for a finder or
    select query.
    
    The method-name element specifies the name of a finder or select
    method in the entity bean's implementation class.
    
    Each method-param must be defined for a query-method using the
    method-params element.
    
    Used in: query
    
    Example:
    
    <query>
        <description>Method finds large orders</description>
        <query-method>
            <method-name>findLargeOrders</method-name>
            <method-params></method-params>
        </query-method>
        <ejb-ql>SELECT OBJECT(o) FROM Order o WHERE o.amount &gt; 1000</ejb-ql>
    </query>
    
  -->
  <xs:element name="query-method">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="method-name"/>
        <xs:element ref="method-params"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The reentrant element specifies whether an entity bean is reentrant or
    not.
    
    The reentrant element must be one of the two following:
    
    	<reentrant>True</reentrant>
    	<reentrant>False</reentrant>
    
    Used in: entity
  -->
  <xs:element name="reentrant">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The relationship-role-source element designates the source of a role
    that participates in a relationship. A relationship-role-source
    element uniquely identifies an entity bean.
    
    Used in: ejb-relationship-role
  -->
  <xs:element name="relationship-role-source">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="ejb-name"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The relationships element describes the relationships in which
    entity beans with container-managed persistence participate. The
    relationships element contains an optional description; and a list of
    ejb-relation elements, which specify the container managed
    relationships.
    
    
    Used in: ejb-jar
  -->
  <xs:element name="relationships">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element maxOccurs="unbounded" ref="ejb-relation"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The remote element contains the fully-qualified name of the enterprise
    bean's remote interface.
    
    Used in: ejb-ref, entity, session
    
    Example:
    
    <remote>com.wombat.empl.EmployeeService</remote>
  -->
  <xs:element name="remote">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The res-auth element specifies whether the enterprise bean code signs
    on programmatically to the resource manager, or whether the Container
    will sign on to the resource manager on behalf of the enterprise bean. In the
    latter case, the Container uses information that is supplied by the
    Deployer.
    
    The value of this element must be one of the two following:
    
    	<res-auth>Application</res-auth>
    	<res-auth>Container</res-auth>
    
    Used in: resource-ref
  -->
  <xs:element name="res-auth">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    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 enterprise bean.
    
    Used in: resource-ref
  -->
  <xs:element name="res-ref-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The res-sharing-scope element specifies whether connections obtained
    through the given resource manager connection factory reference can be
    shared. The value of this element, if specified, must be one of the
    two following:
    
    	<res-sharing-scope>Shareable</res-sharing-scope>
    	<res-sharing-scope>Unshareable</res-sharing-scope>
    
    The default value is Shareable.
    
    Used in: resource-ref
  -->
  <xs:element name="res-sharing-scope">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    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.
    
    Used in: resource-ref
  -->
  <xs:element name="res-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The resource-env-ref element contains a declaration of an enterprise bean's
    reference to an administered object associated with a resource
    in the enterprise bean's environment.  It consists of an optional
    description, the resource environment reference name, and an
    indication of the resource environment reference type expected by
    the enterprise bean code.
    
    Used in: entity, message-driven, session
    
    Example:
    
    <resource-env-ref>
        <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>
        <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
    </resource-env-ref>
  -->
  <xs:element name="resource-env-ref">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="resource-env-ref-name"/>
        <xs:element ref="resource-env-ref-type"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The resource-env-ref-name element specifies the name of a resource
    environment reference; its value is the environment entry name used in
    the enterprise bean code.  The name is a JNDI name relative to the
    java:comp/env context and must be unique within an enterprise bean.
    
    Used in: resource-env-ref
  -->
  <xs:element name="resource-env-ref-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    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.
    
    Used in: resource-env-ref
  -->
  <xs:element name="resource-env-ref-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The resource-ref element contains a declaration of an enterprise bean's
    reference to an external resource. It consists of an optional
    description, the resource manager connection factory reference name,
    the indication of the resource manager connection factory type
    expected by the enterprise bean code, the type of authentication
    (Application or Container), and an optional specification of the
    shareability of connections obtained from the resource (Shareable or
    Unshareable).
    
    Used in: entity, message-driven, session
    
    Example:
    
        <resource-ref>
    	<res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
    	<res-type>javax.sql.DataSource</res-type>
    	<res-auth>Container</res-auth>
    	<res-sharing-scope>Shareable</res-sharing-scope>
        </resource-ref>
  -->
  <xs:element name="resource-ref">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="res-ref-name"/>
        <xs:element ref="res-type"/>
        <xs:element ref="res-auth"/>
        <xs:element minOccurs="0" ref="res-sharing-scope"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The result-type-mapping element is used in the query element to specify
    whether an abstract schema type returned by a query for a select method
    is to be mapped to an EJBLocalObject or EJBObject type.
    
    The result-type-mapping element must be one of the following:
    
            <result-type-mapping>Local</result-type-mapping>
            <result-type-mapping>Remote</result-type-mapping>
    
    Used in: query
  -->
  <xs:element name="result-type-mapping">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The role-link element is a reference to a defined security role. The
    role-link element must contain the name of one of the security roles
    defined in the security-role elements.
    
    Used in: security-role-ref
  -->
  <xs:element name="role-link">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The role-name element contains the name of a security role.
    
    The name must conform to the lexical rules for an NMTOKEN.
    
    Used in: method-permission, run-as, security-role, security-role-ref
  -->
  <xs:element name="role-name">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The run-as element specifies the run-as identity to be used for the
    execution of the enterprise bean. It contains an optional description, and
    the name of a security role.
    
    Used in: security-identity
  -->
  <xs:element name="run-as">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="role-name"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The security-identity element specifies whether the caller's
    security identity is to be used for the execution of the methods of
    the enterprise bean or whether a specific run-as identity is to be
    used. It contains an optional description and a specification of the
    security identity to be used.
    
    Used in: entity, message-driven, session
  -->
  <xs:element name="security-identity">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:choice>
          <xs:element ref="use-caller-identity"/>
          <xs:element ref="run-as"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The security-role element contains the definition of a security
    role. The definition consists of an optional description of the
    security role, and the security role name.
    
    Used in: assembly-descriptor
    
    Example:
    
        <security-role>
    	<description>
    	    This role includes all employees who are authorized
    	    to access the employee service application.
    	</description>
    	<role-name>employee</role-name>
        </security-role>
  -->
  <xs:element name="security-role">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="role-name"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The security-role-ref element contains the declaration of a security
    role reference in the enterprise bean's code. The declaration consists
    of an optional description, the security role name used in the code,
    and an optional link to a security role. If the security role is not
    specified, the Deployer must choose an appropriate security role.
    
    The value of the role-name element must be the String used as the
    parameter to the EJBContext.isCallerInRole(String roleName) method
    or the HttpServletRequest.isUserInRole(String role) method.
    
    Used in: entity, session
    
  -->
  <xs:element name="security-role-ref">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element ref="role-name"/>
        <xs:element minOccurs="0" ref="role-link"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The session element declares an session bean. The declaration consists
    of:
    	- an optional description
    	- an optional display name
    	- an optional small icon file name
    	- an optional large icon file name
    	- a name assigned to the enterprise bean
    	  in the deployment description
    	- the names of the session bean's remote home and
    	  remote interfaces, if any
    	- the names of the session bean's local home and
    	  local interfaces, if any
    	- the session bean's implementation class
    	- the session bean's state management type
    	- the session bean's transaction management type
    	- an optional declaration of the bean's environment entries
    	- an optional declaration of the bean's EJB references
    	- an optional declaration of the bean's local EJB references
    	- an optional declaration of the security role references
    	- an optional declaration of the security identity to be
    	  used for the execution of the bean's methods
    	- an optional declaration of the bean's resource manager
    	  connection factory references
    	- an optional declaration of the bean's resource environment
    	  references.
    
    The elements that are optional are "optional" in the sense that they
    are omitted when if lists represented by them are empty.
    
    Either both the local-home and the local elements or both the
    home and the remote elements must be specified for the session bean.
    
    Used in: enterprise-beans
  -->
  <xs:element name="session">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="description"/>
        <xs:element minOccurs="0" ref="display-name"/>
        <xs:element minOccurs="0" ref="small-icon"/>
        <xs:element minOccurs="0" ref="large-icon"/>
        <xs:element ref="ejb-name"/>
        <xs:element minOccurs="0" ref="home"/>
        <xs:element minOccurs="0" ref="remote"/>
        <xs:element minOccurs="0" ref="local-home"/>
        <xs:element minOccurs="0" ref="local"/>
        <xs:element ref="ejb-class"/>
        <xs:element ref="session-type"/>
        <xs:element ref="transaction-type"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="env-entry"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ejb-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ejb-local-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="security-role-ref"/>
        <xs:element minOccurs="0" ref="security-identity"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-ref"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="resource-env-ref"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The session-type element describes whether the session bean is a
    stateful session or stateless session.
    
    The session-type element must be one of the two following:
    
    	<session-type>Stateful</session-type>
    	<session-type>Stateless</session-type>
  -->
  <xs:element name="session-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    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 enterprise bean's
    ejb-jar file.
    
    The image may be either in the JPEG or GIF format.
    The icon can be used by tools.
    
    Used in: ejb-jar, entity, message-driven, session
    
    Example:
    
    <small-icon>employee-service-icon16x16.jpg</small-icon>
  -->
  <xs:element name="small-icon">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The subscription-durability element specifies whether a JMS topic
    subscription is intended to be durable or nondurable.
    
    The subscription-durability element must be one of the two following:
    
    	<subscription-durability>Durable</subscription-durability>
    	<subscription-durability>NonDurable</subscription-durability>
    
    Used in: message-driven-destination
  -->
  <xs:element name="subscription-durability">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The trans-attribute element specifies how the container must manage
    the transaction boundaries when delegating a method invocation to an
    enterprise bean's business method.
    
    The value of trans-attribute must be one of the following:
    
    
    	<trans-attribute>NotSupported</trans-attribute>
    	<trans-attribute>Supports</trans-attribute>
    	<trans-attribute>Required</trans-attribute>
    	<trans-attribute>RequiresNew</trans-attribute>
    	<trans-attribute>Mandatory</trans-attribute>
    	<trans-attribute>Never</trans-attribute>
    
    Used in: container-transaction
  -->
  <xs:element name="trans-attribute">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The transaction-type element specifies an enterprise bean's
    transaction management type.
    
    The transaction-type element must be one of the two following:
    
    	<transaction-type>Bean</transaction-type>
    	<transaction-type>Container</transaction-type>
    
    Used in: message-driven, session
  -->
  <xs:element name="transaction-type">
    <xs:complexType mixed="true">
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    The unchecked element specifies that a method is not checked for authorization
    by the container prior to invocation of the method.
    
    Used in: method-permission
  -->
  <xs:element name="unchecked">
    <xs:complexType>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!--
    
    The use-caller-identity element specifies that the caller's security
    identity be used as the security identity for the execution of the
    enterprise bean's methods.
    
    Used in: security-identity
  -->
  <xs:element name="use-caller-identity">
    <xs:complexType>
      <xs:attribute name="id" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
<!--
  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.
-->
