You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2003/11/17 04:27:56 UTC

cvs commit: incubator-geronimo/modules/core/src/schema geronimo-ejb-jar.xsd

djencks     2003/11/16 19:27:56

  Modified:    modules/core/src/java/org/apache/geronimo/deployment/model/geronimo/ejb
                        Entity.java
               modules/core/src/java/org/apache/geronimo/xml/deployment
                        EjbJarLoader.java GeronimoEjbJarLoader.java
               modules/core/src/schema geronimo-ejb-jar.xsd
  Added:       modules/core/src/java/org/apache/geronimo/deployment/model/geronimo/ejb
                        Binding.java Query.java
  Log:
  add geronimo xml sql query binding functionality
  
  Revision  Changes    Path
  1.5       +18 -1     incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/geronimo/ejb/Entity.java
  
  Index: Entity.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/geronimo/ejb/Entity.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Entity.java	29 Sep 2003 14:17:22 -0000	1.4
  +++ Entity.java	17 Nov 2003 03:27:55 -0000	1.5
  @@ -80,6 +80,7 @@
           super.setResourceEnvRef(new ResourceEnvRef[0]);
           super.setMessageDestinationRef(new MessageDestinationRef[0]);
           super.setServiceRef(new ServiceRef[0]);
  +        super.setQuery(new Query[0]);
       }
   
       public String getJndiName() {
  @@ -270,5 +271,21 @@
   
       public void setGeronimoServiceRef(int i, ServiceRef ref) {
           super.setServiceRef(i, ref);
  +    }
  +
  +    public void setGeronimoQuery(Query[] query) {
  +        super.setQuery(query);
  +    }
  +
  +    public Query[] getGeronimoQuery() {
  +        return (Query[])super.getQuery();
  +    }
  +
  +    public void setGeronimoQuery(int i, Query query) {
  +        super.setQuery(i, query);
  +    }
  +
  +    public Query getGeronimoQuery(int i) {
  +        return (Query)super.getQuery(i);
       }
   }
  
  
  
  1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/geronimo/ejb/Binding.java
  
  Index: Binding.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.deployment.model.geronimo.ejb;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2003/11/17 03:27:55 $
   *
   * */
  public class Binding {
      private String type;
      private int param;
  
      public String getType() {
          return type;
      }
  
      public void setType(String type) {
          this.type = type;
      }
  
      public int getParam() {
          return param;
      }
  
      public void setParam(int param) {
          this.param = param;
      }
  }
  
  
  
  1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/deployment/model/geronimo/ejb/Query.java
  
  Index: Query.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.deployment.model.geronimo.ejb;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2003/11/17 03:27:55 $
   *
   * */
  public class Query extends org.apache.geronimo.deployment.model.ejb.Query {
  
      private String sql;
      private Binding[] inputBinding;
      private Binding outputBinding;
      private String abstractSchemaName;
  
      public String getSql() {
          return sql;
      }
  
      public void setSql(String sql) {
          this.sql = sql;
      }
  
      public Binding[] getInputBinding() {
          return inputBinding;
      }
  
      public void setInputBinding(Binding[] inputBinding) {
          this.inputBinding = inputBinding;
      }
  
      public Binding getOutputBinding() {
          return outputBinding;
      }
  
      public void setOutputBinding(Binding outputBinding) {
          this.outputBinding = outputBinding;
      }
  
      public String getAbstractSchemaName() {
          return abstractSchemaName;
      }
  
      public void setAbstractSchemaName(String abstractSchemaName) {
          this.abstractSchemaName = abstractSchemaName;
      }
  }
  
  
  
  1.10      +10 -5     incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/EjbJarLoader.java
  
  Index: EjbJarLoader.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/EjbJarLoader.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- EjbJarLoader.java	1 Oct 2003 03:22:48 -0000	1.9
  +++ EjbJarLoader.java	17 Nov 2003 03:27:56 -0000	1.10
  @@ -308,12 +308,17 @@
           Element[] roots = LoaderUtil.getChildren(parent, "query");
           Query[] queries = new Query[roots.length];
           for(int i = 0; i < roots.length; i++) {
  -            J2EELoader.loadDescribable(roots[i], queries[i]);
  -            queries[i].setEjbQl(LoaderUtil.getChildContent(roots[i], "ejb-ql"));
  -            queries[i].setResultTypeMapping(LoaderUtil.getChildContent(roots[i], "result-type-mapping"));
  -            queries[i].setQueryMethod(loadQueryMethod(roots[i]));
  +            queries[i] = loadQuery(roots[i], new Query());
           }
           return queries;
  +    }
  +
  +    static Query loadQuery(Element root, Query query) {
  +        J2EELoader.loadDescribable(root, query);
  +        query.setEjbQl(LoaderUtil.getChildContent(root, "ejb-ql"));
  +        query.setResultTypeMapping(LoaderUtil.getChildContent(root, "result-type-mapping"));
  +        query.setQueryMethod(loadQueryMethod(root));
  +        return query;
       }
   
       private static QueryMethod loadQueryMethod(Element root) {
  
  
  
  1.7       +37 -2     incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/GeronimoEjbJarLoader.java
  
  Index: GeronimoEjbJarLoader.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/GeronimoEjbJarLoader.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- GeronimoEjbJarLoader.java	17 Nov 2003 02:03:16 -0000	1.6
  +++ GeronimoEjbJarLoader.java	17 Nov 2003 03:27:56 -0000	1.7
  @@ -63,6 +63,8 @@
   import org.apache.geronimo.deployment.model.geronimo.ejb.MessageDriven;
   import org.apache.geronimo.deployment.model.geronimo.ejb.Entity;
   import org.apache.geronimo.deployment.model.geronimo.ejb.Session;
  +import org.apache.geronimo.deployment.model.geronimo.ejb.Query;
  +import org.apache.geronimo.deployment.model.geronimo.ejb.Binding;
   import org.apache.geronimo.deployment.model.ejb.Ejb;
   import org.apache.geronimo.deployment.model.ejb.Relationships;
   import org.apache.geronimo.deployment.model.ejb.AssemblyDescriptor;
  @@ -170,11 +172,44 @@
               entities[i].setAbstractSchemaName(LoaderUtil.getChildContent(root, "abstract-schema-name"));
               entities[i].setPrimkeyField(LoaderUtil.getChildContent(root, "primkey-field"));
               entities[i].setCmpField(EjbJarLoader.loadCmpFields(root));
  -            entities[i].setQuery(EjbJarLoader.loadQueries(root));
  +            entities[i].setQuery(GeronimoEjbJarLoader.loadQueries(root));
               entities[i].setJndiName(LoaderUtil.getChildContent(root, "jndi-name"));
           }
           return entities;
       }
  +
  +    static Query[] loadQueries(Element parent) {
  +        Element[] roots = LoaderUtil.getChildren(parent, "query");
  +        Query[] queries = new Query[roots.length];
  +        for(int i = 0; i < roots.length; i++) {
  +            Element root = roots[i];
  +            Query query = (Query) EjbJarLoader.loadQuery(root, new Query());
  +            query.setSql(LoaderUtil.getChildContent(root, "sql"));
  +            query.setInputBinding(loadInputBinding(LoaderUtil.getChild(root, "input-binding")));
  +            Element outputBinding = LoaderUtil.getChild(root, "output-binding");
  +            query.setAbstractSchemaName(LoaderUtil.getChildContent(outputBinding, "abstract-schema-name"));
  +            query.setOutputBinding(loadBinding(outputBinding));
  +            queries[i] = query;
  +        }
  +        return queries;
  +    }
  +
  +    private static Binding[] loadInputBinding(Element parent) {
  +        Element[] roots = LoaderUtil.getChildren(parent, "binding");
  +        Binding[] bindings = new Binding[roots.length];
  +        for (int i = 0; i < bindings.length; i++) {
  +            bindings[i] = loadBinding(roots[i]);
  +        }
  +        return bindings;
  +    }
  +
  +    private static Binding loadBinding(Element root) {
  +        Binding binding = new Binding();
  +        binding.setType(LoaderUtil.getAttribute(root, "type"));
  +        binding.setParam(Integer.parseInt(LoaderUtil.getChildContent(root, "param")));
  +        return binding;
  +    }
  +
   
       private static void loadEjb(Element root, Ejb bean) {
           EjbJarLoader.loadEjb(root, bean);
  
  
  
  1.7       +461 -465  incubator-geronimo/modules/core/src/schema/geronimo-ejb-jar.xsd
  
  Index: geronimo-ejb-jar.xsd
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/schema/geronimo-ejb-jar.xsd,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- geronimo-ejb-jar.xsd	17 Nov 2003 02:03:16 -0000	1.6
  +++ geronimo-ejb-jar.xsd	17 Nov 2003 03:27:56 -0000	1.7
  @@ -1,469 +1,465 @@
   <?xml version="1.0" encoding="UTF-8"?>
   <xsd:schema targetNamespace="http://java.sun.com/xml/ns/j2ee" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1">
  -  <xsd:include schemaLocation="geronimo-j2ee.xsd"/>
  -  <xsd:element name="ejb-jar" type="j2ee:ejb-jarType">
  -    <xsd:key name="ejb-name-key">
  -      <xsd:selector xpath="j2ee:enterprise-beans/*"/>
  -      <xsd:field xpath="j2ee:ejb-name"/>
  -    </xsd:key>
  -    <xsd:keyref name="ejb-name-references" refer="j2ee:ejb-name-key">
  -      <xsd:selector xpath=".//j2ee:ejb-relationship-role/j2ee:relationship-role-source"/>
  -      <xsd:field xpath="j2ee:ejb-name"/>
  -    </xsd:keyref>
  -    <xsd:key name="role-name-key">
  -      <xsd:selector xpath="j2ee:assembly-descriptor/j2ee:security-role"/>
  -      <xsd:field xpath="j2ee:role-name"/>
  -    </xsd:key>
  -    <xsd:keyref name="role-name-references" refer="j2ee:role-name-key">
  -      <xsd:selector xpath="j2ee:enterprise-beans/*/j2ee:security-role-ref"/>
  -      <xsd:field xpath="j2ee:role-link"/>
  -    </xsd:keyref>
  -  </xsd:element>
  -  <xsd:complexType name="activation-config-propertyType">
  -    <xsd:sequence>
  -      <xsd:element name="activation-config-property-name" type="j2ee:xsdStringType"/>
  -      <xsd:element name="activation-config-property-value" type="j2ee:xsdStringType"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="activation-configType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="activation-config-property" type="j2ee:activation-config-propertyType" maxOccurs="unbounded"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="assembly-descriptorType">
  -    <xsd:sequence>
  -      <xsd:element name="security-role" type="j2ee:security-roleType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="method-permission" type="j2ee:method-permissionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="container-transaction" type="j2ee:container-transactionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="message-destination" type="j2ee:message-destinationType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="exclude-list" type="j2ee:exclude-listType" minOccurs="0"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="cmp-fieldType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="field-name" type="j2ee:java-identifierType"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="cmp-versionType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="1.x"/>
  -        <xsd:enumeration value="2.x"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="cmr-field-typeType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="java.util.Collection"/>
  -        <xsd:enumeration value="java.util.Set"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="cmr-fieldType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="cmr-field-name" type="j2ee:string"/>
  -      <xsd:element name="cmr-field-type" type="j2ee:cmr-field-typeType" minOccurs="0"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="container-transactionType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="method" type="j2ee:methodType" maxOccurs="unbounded"/>
  -      <xsd:element name="trans-attribute" type="j2ee:trans-attributeType"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="ejb-classType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:fully-qualified-classType"/>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="ejb-jarType">
  -    <xsd:sequence>
  -      <xsd:element name="class-space" type="ger:class-spaceType"/>
  -      <xsd:group ref="j2ee:descriptionGroup"/>
  -      <xsd:element name="module-name" type="j2ee:string" minOccurs="0"/>
  -      <xsd:element name="datasource-name" type="j2ee:string"/>
  -      <xsd:element name="enterprise-beans" type="j2ee:enterprise-beansType"/>
  -      <xsd:element name="relationships" type="j2ee:relationshipsType" minOccurs="0">
  -        <xsd:unique name="relationship-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-relation"/>
  -          <xsd:field xpath="j2ee:ejb-relation-name"/>
  -        </xsd:unique>
  -      </xsd:element>
  -      <xsd:element name="assembly-descriptor" type="j2ee:assembly-descriptorType" minOccurs="0"/>
  -      <xsd:element name="ejb-client-jar" type="j2ee:pathType" minOccurs="0"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="version" type="j2ee:dewey-versionType" use="required" fixed="2.1"/>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="ejb-nameType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:xsdNMTOKENType"/>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="ejb-relationType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="ejb-relation-name" type="j2ee:string" minOccurs="0"/>
  -      <xsd:element name="ejb-relationship-role" type="j2ee:ejb-relationship-roleType"/>
  -      <xsd:element name="ejb-relationship-role" type="j2ee:ejb-relationship-roleType"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="ejb-relationship-roleType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="ejb-relationship-role-name" type="j2ee:string" minOccurs="0"/>
  -      <xsd:element name="multiplicity" type="j2ee:multiplicityType"/>
  -      <xsd:element name="cascade-delete" type="j2ee:emptyType" minOccurs="0"/>
  -      <xsd:element name="relationship-role-source" type="j2ee:relationship-role-sourceType"/>
  -      <xsd:element name="cmr-field" type="j2ee:cmr-fieldType" minOccurs="0"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="enterprise-beansType">
  -    <xsd:choice maxOccurs="unbounded">
  -      <xsd:element name="session" type="j2ee:session-beanType">
  -        <xsd:unique name="session-ejb-local-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-local-ref"/>
  -          <xsd:field xpath="j2ee:ejb-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="session-ejb-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-ref"/>
  -          <xsd:field xpath="j2ee:ejb-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="session-resource-env-ref-uniqueness">
  -          <xsd:selector xpath="j2ee:resource-env-ref"/>
  -          <xsd:field xpath="j2ee:resource-env-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="session-message-destination-ref-uniqueness">
  -          <xsd:selector xpath="j2ee:message-destination-ref"/>
  -          <xsd:field xpath="j2ee:message-destination-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="session-res-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:resource-ref"/>
  -          <xsd:field xpath="j2ee:res-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="session-env-entry-name-uniqueness">
  -          <xsd:selector xpath="j2ee:env-entry"/>
  -          <xsd:field xpath="j2ee:env-entry-name"/>
  -        </xsd:unique>
  -      </xsd:element>
  -      <xsd:element name="entity" type="j2ee:entity-beanType">
  -        <xsd:unique name="entity-ejb-local-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-local-ref"/>
  -          <xsd:field xpath="j2ee:ejb-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="entity-ejb-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-ref"/>
  -          <xsd:field xpath="j2ee:ejb-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="entity-resource-env-ref-uniqueness">
  -          <xsd:selector xpath="j2ee:resource-env-ref"/>
  -          <xsd:field xpath="j2ee:resource-env-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="entity-message-destination-ref-uniqueness">
  -          <xsd:selector xpath="j2ee:message-destination-ref"/>
  -          <xsd:field xpath="j2ee:message-destination-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="entity-res-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:resource-ref"/>
  -          <xsd:field xpath="j2ee:res-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="entity-env-entry-name-uniqueness">
  -          <xsd:selector xpath="j2ee:env-entry"/>
  -          <xsd:field xpath="j2ee:env-entry-name"/>
  -        </xsd:unique>
  -      </xsd:element>
  -      <xsd:element name="message-driven" type="j2ee:message-driven-beanType">
  -        <xsd:unique name="messaged-ejb-local-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-local-ref"/>
  -          <xsd:field xpath="j2ee:ejb-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="messaged-ejb-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:ejb-ref"/>
  -          <xsd:field xpath="j2ee:ejb-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="messaged-resource-env-ref-uniqueness">
  -          <xsd:selector xpath="j2ee:resource-env-ref"/>
  -          <xsd:field xpath="j2ee:resource-env-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="messaged-message-destination-ref-uniqueness">
  -          <xsd:selector xpath="j2ee:message-destination-ref"/>
  -          <xsd:field xpath="j2ee:message-destination-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="messaged-res-ref-name-uniqueness">
  -          <xsd:selector xpath="j2ee:resource-ref"/>
  -          <xsd:field xpath="j2ee:res-ref-name"/>
  -        </xsd:unique>
  -        <xsd:unique name="messaged-env-entry-name-uniqueness">
  -          <xsd:selector xpath="j2ee:env-entry"/>
  -          <xsd:field xpath="j2ee:env-entry-name"/>
  -        </xsd:unique>
  -      </xsd:element>
  -    </xsd:choice>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="entity-beanType">
  -    <xsd:sequence>
  -      <xsd:group ref="j2ee:descriptionGroup"/>
  -      <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  -      <xsd:element name="home" type="j2ee:homeType" minOccurs="0"/>
  -      <xsd:element name="remote" type="j2ee:remoteType" minOccurs="0"/>
  -      <xsd:element name="local-home" type="j2ee:local-homeType" minOccurs="0"/>
  -      <xsd:element name="local" type="j2ee:localType" minOccurs="0"/>
  -      <xsd:element name="ejb-class" type="j2ee:ejb-classType"/>
  -      <xsd:element name="persistence-type" type="j2ee:persistence-typeType"/>
  -      <xsd:element name="prim-key-class" type="j2ee:fully-qualified-classType"/>
  -      <xsd:element name="reentrant" type="j2ee:true-falseType"/>
  -      <xsd:element name="cmp-version" type="j2ee:cmp-versionType" minOccurs="0"/>
  -      <xsd:element name="abstract-schema-name" type="j2ee:java-identifierType" minOccurs="0"/>
  -      <xsd:element name="cmp-field" type="j2ee:cmp-fieldType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="primkey-field" type="j2ee:string" minOccurs="0"/>
  -      <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
  -      <xsd:element name="security-role-ref" type="j2ee:security-role-refType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="security-identity" type="j2ee:security-identityType" minOccurs="0"/>
  -      <xsd:element name="query" type="j2ee:queryType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="jndi-name" type="xsd:string" minOccurs="0">
  -        <xsd:annotation>
  -          <xsd:documentation>
  -            Actually, ejbs are located by the module name and ejb name.
  +    <xsd:include schemaLocation="geronimo-j2ee.xsd"/>
  +    <xsd:element name="ejb-jar" type="j2ee:ejb-jarType">
  +        <xsd:key name="ejb-name-key">
  +            <xsd:selector xpath="j2ee:enterprise-beans/*"/>
  +            <xsd:field xpath="j2ee:ejb-name"/>
  +        </xsd:key>
  +        <xsd:keyref name="ejb-name-references" refer="j2ee:ejb-name-key">
  +            <xsd:selector xpath=".//j2ee:ejb-relationship-role/j2ee:relationship-role-source"/>
  +            <xsd:field xpath="j2ee:ejb-name"/>
  +        </xsd:keyref>
  +        <xsd:key name="role-name-key">
  +            <xsd:selector xpath="j2ee:assembly-descriptor/j2ee:security-role"/>
  +            <xsd:field xpath="j2ee:role-name"/>
  +        </xsd:key>
  +        <xsd:keyref name="role-name-references" refer="j2ee:role-name-key">
  +            <xsd:selector xpath="j2ee:enterprise-beans/*/j2ee:security-role-ref"/>
  +            <xsd:field xpath="j2ee:role-link"/>
  +        </xsd:keyref>
  +    </xsd:element>
  +    <xsd:complexType name="activation-config-propertyType">
  +        <xsd:sequence>
  +            <xsd:element name="activation-config-property-name" type="j2ee:xsdStringType"/>
  +            <xsd:element name="activation-config-property-value" type="j2ee:xsdStringType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="activation-configType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="activation-config-property" type="j2ee:activation-config-propertyType" maxOccurs="unbounded"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="assembly-descriptorType">
  +        <xsd:sequence>
  +            <xsd:element name="security-role" type="j2ee:security-roleType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="method-permission" type="j2ee:method-permissionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="container-transaction" type="j2ee:container-transactionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="message-destination" type="j2ee:message-destinationType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="exclude-list" type="j2ee:exclude-listType" minOccurs="0"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="cmp-fieldType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="field-name" type="j2ee:java-identifierType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="cmp-versionType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="1.x"/>
  +                <xsd:enumeration value="2.x"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="cmr-field-typeType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="java.util.Collection"/>
  +                <xsd:enumeration value="java.util.Set"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="cmr-fieldType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="cmr-field-name" type="j2ee:string"/>
  +            <xsd:element name="cmr-field-type" type="j2ee:cmr-field-typeType" minOccurs="0"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="container-transactionType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="method" type="j2ee:methodType" maxOccurs="unbounded"/>
  +            <xsd:element name="trans-attribute" type="j2ee:trans-attributeType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="ejb-classType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:fully-qualified-classType"/>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="ejb-jarType">
  +        <xsd:sequence>
  +            <xsd:element name="class-space" type="ger:class-spaceType"/>
  +            <xsd:group ref="j2ee:descriptionGroup"/>
  +            <xsd:element name="module-name" type="j2ee:string" minOccurs="0"/>
  +            <xsd:element name="datasource-name" type="j2ee:string"/>
  +            <xsd:element name="enterprise-beans" type="j2ee:enterprise-beansType"/>
  +            <xsd:element name="relationships" type="j2ee:relationshipsType" minOccurs="0">
  +                <xsd:unique name="relationship-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-relation"/>
  +                    <xsd:field xpath="j2ee:ejb-relation-name"/>
  +                </xsd:unique>
  +            </xsd:element>
  +            <xsd:element name="assembly-descriptor" type="j2ee:assembly-descriptorType" minOccurs="0"/>
  +            <xsd:element name="ejb-client-jar" type="j2ee:pathType" minOccurs="0"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="version" type="j2ee:dewey-versionType" use="required" fixed="2.1"/>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="ejb-nameType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:xsdNMTOKENType"/>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="ejb-relationType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="ejb-relation-name" type="j2ee:string" minOccurs="0"/>
  +            <xsd:element name="ejb-relationship-role" type="j2ee:ejb-relationship-roleType"/>
  +            <xsd:element name="ejb-relationship-role" type="j2ee:ejb-relationship-roleType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="ejb-relationship-roleType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="ejb-relationship-role-name" type="j2ee:string" minOccurs="0"/>
  +            <xsd:element name="multiplicity" type="j2ee:multiplicityType"/>
  +            <xsd:element name="cascade-delete" type="j2ee:emptyType" minOccurs="0"/>
  +            <xsd:element name="relationship-role-source" type="j2ee:relationship-role-sourceType"/>
  +            <xsd:element name="cmr-field" type="j2ee:cmr-fieldType" minOccurs="0"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="enterprise-beansType">
  +        <xsd:choice maxOccurs="unbounded">
  +            <xsd:element name="session" type="j2ee:session-beanType">
  +                <xsd:unique name="session-ejb-local-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-local-ref"/>
  +                    <xsd:field xpath="j2ee:ejb-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="session-ejb-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-ref"/>
  +                    <xsd:field xpath="j2ee:ejb-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="session-resource-env-ref-uniqueness">
  +                    <xsd:selector xpath="j2ee:resource-env-ref"/>
  +                    <xsd:field xpath="j2ee:resource-env-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="session-message-destination-ref-uniqueness">
  +                    <xsd:selector xpath="j2ee:message-destination-ref"/>
  +                    <xsd:field xpath="j2ee:message-destination-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="session-res-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:resource-ref"/>
  +                    <xsd:field xpath="j2ee:res-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="session-env-entry-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:env-entry"/>
  +                    <xsd:field xpath="j2ee:env-entry-name"/>
  +                </xsd:unique>
  +            </xsd:element>
  +            <xsd:element name="entity" type="j2ee:entity-beanType">
  +                <xsd:unique name="entity-ejb-local-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-local-ref"/>
  +                    <xsd:field xpath="j2ee:ejb-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="entity-ejb-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-ref"/>
  +                    <xsd:field xpath="j2ee:ejb-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="entity-resource-env-ref-uniqueness">
  +                    <xsd:selector xpath="j2ee:resource-env-ref"/>
  +                    <xsd:field xpath="j2ee:resource-env-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="entity-message-destination-ref-uniqueness">
  +                    <xsd:selector xpath="j2ee:message-destination-ref"/>
  +                    <xsd:field xpath="j2ee:message-destination-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="entity-res-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:resource-ref"/>
  +                    <xsd:field xpath="j2ee:res-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="entity-env-entry-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:env-entry"/>
  +                    <xsd:field xpath="j2ee:env-entry-name"/>
  +                </xsd:unique>
  +            </xsd:element>
  +            <xsd:element name="message-driven" type="j2ee:message-driven-beanType">
  +                <xsd:unique name="messaged-ejb-local-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-local-ref"/>
  +                    <xsd:field xpath="j2ee:ejb-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="messaged-ejb-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:ejb-ref"/>
  +                    <xsd:field xpath="j2ee:ejb-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="messaged-resource-env-ref-uniqueness">
  +                    <xsd:selector xpath="j2ee:resource-env-ref"/>
  +                    <xsd:field xpath="j2ee:resource-env-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="messaged-message-destination-ref-uniqueness">
  +                    <xsd:selector xpath="j2ee:message-destination-ref"/>
  +                    <xsd:field xpath="j2ee:message-destination-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="messaged-res-ref-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:resource-ref"/>
  +                    <xsd:field xpath="j2ee:res-ref-name"/>
  +                </xsd:unique>
  +                <xsd:unique name="messaged-env-entry-name-uniqueness">
  +                    <xsd:selector xpath="j2ee:env-entry"/>
  +                    <xsd:field xpath="j2ee:env-entry-name"/>
  +                </xsd:unique>
  +            </xsd:element>
  +        </xsd:choice>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="entity-beanType">
  +        <xsd:sequence>
  +            <xsd:group ref="j2ee:descriptionGroup"/>
  +            <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  +            <xsd:element name="home" type="j2ee:homeType" minOccurs="0"/>
  +            <xsd:element name="remote" type="j2ee:remoteType" minOccurs="0"/>
  +            <xsd:element name="local-home" type="j2ee:local-homeType" minOccurs="0"/>
  +            <xsd:element name="local" type="j2ee:localType" minOccurs="0"/>
  +            <xsd:element name="ejb-class" type="j2ee:ejb-classType"/>
  +            <xsd:element name="persistence-type" type="j2ee:persistence-typeType"/>
  +            <xsd:element name="prim-key-class" type="j2ee:fully-qualified-classType"/>
  +            <xsd:element name="reentrant" type="j2ee:true-falseType"/>
  +            <xsd:element name="cmp-version" type="j2ee:cmp-versionType" minOccurs="0"/>
  +            <xsd:element name="abstract-schema-name" type="j2ee:java-identifierType" minOccurs="0"/>
  +            <xsd:element name="cmp-field" type="j2ee:cmp-fieldType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="primkey-field" type="j2ee:string" minOccurs="0"/>
  +            <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
  +            <xsd:element name="security-role-ref" type="j2ee:security-role-refType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="security-identity" type="j2ee:security-identityType" minOccurs="0"/>
  +            <xsd:element name="query" type="j2ee:queryType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="jndi-name" type="xsd:string" minOccurs="0">
  +                <xsd:annotation>
  +                    <xsd:documentation>
  +                        Actually, ejbs are located by the module name and ejb name.
   
  -            The JNDI name controls where this EJB will appear in the application-wide JNDI
  -            space.  Other application components that want to refer to this EJB can define
  -            EJB references and map them to this JNDI location.
  -          </xsd:documentation>
  -        </xsd:annotation>
  -      </xsd:element>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="exclude-listType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="method" type="j2ee:methodType" maxOccurs="unbounded"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="java-typeType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:pattern value="[^\p{Z}]*"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="message-driven-beanType">
  -    <xsd:sequence>
  -      <xsd:group ref="j2ee:descriptionGroup"/>
  -      <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  -      <xsd:element name="ejb-class" type="j2ee:ejb-classType"/>
  -      <xsd:element name="messaging-type" type="j2ee:fully-qualified-classType" minOccurs="0"/>
  -      <xsd:element name="transaction-type" type="j2ee:transaction-typeType"/>
  -      <xsd:element name="message-destination-type" type="j2ee:message-destination-typeType" minOccurs="0"/>
  -      <xsd:element name="message-destination-link" type="j2ee:message-destination-linkType" minOccurs="0"/>
  -      <xsd:element name="activation-config" type="j2ee:activation-configType" minOccurs="0"/>
  -      <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
  -      <xsd:element name="security-identity" type="j2ee:security-identityType" minOccurs="0"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="method-intfType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="Home"/>
  -        <xsd:enumeration value="Remote"/>
  -        <xsd:enumeration value="LocalHome"/>
  -        <xsd:enumeration value="Local"/>
  -        <xsd:enumeration value="ServiceEndpoint"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="method-nameType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string"/>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="method-paramsType">
  -    <xsd:sequence>
  -      <xsd:element name="method-param" type="j2ee:java-typeType" minOccurs="0" maxOccurs="unbounded"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="method-permissionType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:choice>
  -        <xsd:element name="role-name" type="j2ee:role-nameType" maxOccurs="unbounded"/>
  -        <xsd:element name="unchecked" type="j2ee:emptyType"/>
  -      </xsd:choice>
  -      <xsd:element name="method" type="j2ee:methodType" maxOccurs="unbounded"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="methodType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  -      <xsd:element name="method-intf" type="j2ee:method-intfType" minOccurs="0"/>
  -      <xsd:element name="method-name" type="j2ee:method-nameType"/>
  -      <xsd:element name="method-params" type="j2ee:method-paramsType" minOccurs="0"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="multiplicityType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="One"/>
  -        <xsd:enumeration value="Many"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="persistence-typeType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="Bean"/>
  -        <xsd:enumeration value="Container"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="query-methodType">
  -    <xsd:sequence>
  -      <xsd:element name="method-name" type="j2ee:method-nameType"/>
  -      <xsd:element name="method-params" type="j2ee:method-paramsType"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="queryType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0"/>
  -      <xsd:element name="query-method" type="j2ee:query-methodType"/>
  -      <xsd:element name="result-type-mapping" type="j2ee:result-type-mappingType" minOccurs="0"/>
  -      <xsd:element name="ejb-ql" type="j2ee:xsdStringType"/>
  -        <xsd:element name="sql" type="j2ee:xsdStringType"/>
  -        <xsd:element name="input-binding" type="ger:input-bindingType" minOccurs="0" maxOccurs="unbounded"/>
  -        <xsd:element name="output-binding" type="ger:output-bindingType"
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -    <query>
  -      <query-method>
  -        <method-name>findAllCustomers</method-name>
  -    <method-params>
  -      <method-param>java.lang.Integer</method-param>
  -      <method-param>java.lang.String</method-param>
  -    </method-params>
  -      </query-method>
  -      <ejb-ql>Select OBJECT(a) From Customer a</ejb-ql>
  -      <ger:sql>SELECT ID FROM CUSTOMER</ger:sql>
  -      <ger:input-binding>
  -         <ger:binding type="o.o.n.persistence.jdbc.IntBinding" param="1"/>
  -         <ger:binding type="o.o.n.persistence.jdbc.StringBinding" param="2"/>
  -      </ger:input-binding>
  -      <ger:output-binding>
  -         <ger:abstract-schema-name>Customer</ger:abstract-schema-name>
  -         <ger:binding type="o.o.n.persistence.jdbc.StringBinding" param="1"/>
  -      </ger:output-binding>
  -    </query>
  -  <xsd:complexType name="relationship-role-sourceType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="relationshipsType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="ejb-relation" type="j2ee:ejb-relationType" maxOccurs="unbounded">
  -        <xsd:unique name="role-name-uniqueness">
  -          <xsd:selector xpath=".//j2ee:ejb-relationship-role-name"/>
  -          <xsd:field xpath="."/>
  -        </xsd:unique>
  -      </xsd:element>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="result-type-mappingType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="Local"/>
  -        <xsd:enumeration value="Remote"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="security-identityType">
  -    <xsd:sequence>
  -      <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:choice>
  -        <xsd:element name="use-caller-identity" type="j2ee:emptyType"/>
  -        <xsd:element name="run-as" type="j2ee:run-asType"/>
  -      </xsd:choice>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="session-beanType">
  -    <xsd:sequence>
  -      <xsd:group ref="j2ee:descriptionGroup"/>
  -      <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  -      <xsd:element name="home" type="j2ee:homeType" minOccurs="0"/>
  -      <xsd:element name="remote" type="j2ee:remoteType" minOccurs="0"/>
  -      <xsd:element name="local-home" type="j2ee:local-homeType" minOccurs="0"/>
  -      <xsd:element name="local" type="j2ee:localType" minOccurs="0"/>
  -      <xsd:element name="service-endpoint" type="j2ee:fully-qualified-classType" minOccurs="0"/>
  -      <xsd:element name="ejb-class" type="j2ee:ejb-classType"/>
  -      <xsd:element name="session-type" type="j2ee:session-typeType"/>
  -      <xsd:element name="transaction-type" type="j2ee:transaction-typeType"/>
  -      <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
  -      <xsd:element name="security-role-ref" type="j2ee:security-role-refType" minOccurs="0" maxOccurs="unbounded"/>
  -      <xsd:element name="security-identity" type="j2ee:security-identityType" minOccurs="0"/>
  -      <xsd:element name="jndi-name" type="xsd:string" minOccurs="0">
  -        <xsd:annotation>
  -          <xsd:documentation>
  -            The JNDI name controls where this EJB will appear in the application-wide JNDI
  -            space.  Other application components that want to refer to this EJB can define
  -            EJB references and map them to this JNDI location.
  -          </xsd:documentation>
  -        </xsd:annotation>
  -      </xsd:element>
  -    </xsd:sequence>
  -    <xsd:attribute name="id" type="xsd:ID"/>
  -  </xsd:complexType>
  -  <xsd:complexType name="session-typeType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="Stateful"/>
  -        <xsd:enumeration value="Stateless"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="trans-attributeType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="NotSupported"/>
  -        <xsd:enumeration value="Supports"/>
  -        <xsd:enumeration value="Required"/>
  -        <xsd:enumeration value="RequiresNew"/>
  -        <xsd:enumeration value="Mandatory"/>
  -        <xsd:enumeration value="Never"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  -  <xsd:complexType name="transaction-typeType">
  -    <xsd:simpleContent>
  -      <xsd:restriction base="j2ee:string">
  -        <xsd:enumeration value="Bean"/>
  -        <xsd:enumeration value="Container"/>
  -      </xsd:restriction>
  -    </xsd:simpleContent>
  -  </xsd:complexType>
  +                        The JNDI name controls where this EJB will appear in the application-wide JNDI
  +                        space.  Other application components that want to refer to this EJB can define
  +                        EJB references and map them to this JNDI location.
  +                    </xsd:documentation>
  +                </xsd:annotation>
  +            </xsd:element>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="exclude-listType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="method" type="j2ee:methodType" maxOccurs="unbounded"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="java-typeType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:pattern value="[^\p{Z}]*"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="message-driven-beanType">
  +        <xsd:sequence>
  +            <xsd:group ref="j2ee:descriptionGroup"/>
  +            <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  +            <xsd:element name="ejb-class" type="j2ee:ejb-classType"/>
  +            <xsd:element name="messaging-type" type="j2ee:fully-qualified-classType" minOccurs="0"/>
  +            <xsd:element name="transaction-type" type="j2ee:transaction-typeType"/>
  +            <xsd:element name="message-destination-type" type="j2ee:message-destination-typeType" minOccurs="0"/>
  +            <xsd:element name="message-destination-link" type="j2ee:message-destination-linkType" minOccurs="0"/>
  +            <xsd:element name="activation-config" type="j2ee:activation-configType" minOccurs="0"/>
  +            <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
  +            <xsd:element name="security-identity" type="j2ee:security-identityType" minOccurs="0"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="method-intfType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="Home"/>
  +                <xsd:enumeration value="Remote"/>
  +                <xsd:enumeration value="LocalHome"/>
  +                <xsd:enumeration value="Local"/>
  +                <xsd:enumeration value="ServiceEndpoint"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="method-nameType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string"/>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="method-paramsType">
  +        <xsd:sequence>
  +            <xsd:element name="method-param" type="j2ee:java-typeType" minOccurs="0" maxOccurs="unbounded"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="method-permissionType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:choice>
  +                <xsd:element name="role-name" type="j2ee:role-nameType" maxOccurs="unbounded"/>
  +                <xsd:element name="unchecked" type="j2ee:emptyType"/>
  +            </xsd:choice>
  +            <xsd:element name="method" type="j2ee:methodType" maxOccurs="unbounded"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="methodType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  +            <xsd:element name="method-intf" type="j2ee:method-intfType" minOccurs="0"/>
  +            <xsd:element name="method-name" type="j2ee:method-nameType"/>
  +            <xsd:element name="method-params" type="j2ee:method-paramsType" minOccurs="0"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="multiplicityType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="One"/>
  +                <xsd:enumeration value="Many"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="persistence-typeType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="Bean"/>
  +                <xsd:enumeration value="Container"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="query-methodType">
  +        <xsd:sequence>
  +            <xsd:element name="method-name" type="j2ee:method-nameType"/>
  +            <xsd:element name="method-params" type="j2ee:method-paramsType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="queryType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0"/>
  +            <xsd:element name="query-method" type="j2ee:query-methodType"/>
  +            <xsd:element name="result-type-mapping" type="j2ee:result-type-mappingType" minOccurs="0"/>
  +            <xsd:element name="ejb-ql" type="j2ee:xsdStringType"/>
  +            <xsd:element name="sql" type="j2ee:xsdStringType"/>
  +            <xsd:element name="input-binding" type="ger:input-bindingType"/>
  +            <xsd:element name="output-binding" type="ger:output-bindingType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="input-bindingType">
  +        <xsd:sequence>
  +            <xsd:element name="binding" type="ger:bindingType" minOccurs="0" maxOccurs="unbounded"/>
  +        </xsd:sequence>
  +    </xsd:complexType>
  +    <xsd:complexType name="output-bindingType">
  +        <xsd:sequence>
  +            <xsd:element name="abstract-schema-name" type="j2ee:java-identifierType"/>
  +            <xsd:element name="binding" type="ger:bindingType"/>
  +        </xsd:sequence>
  +    </xsd:complexType>
  +    <xsd:complexType name="bindingType">
  +        <xsd:attribute name="type" type="j2ee:java-typeType"/>
  +        <xsd:attribute name="param" type="xs:int"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="relationship-role-sourceType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="relationshipsType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="ejb-relation" type="j2ee:ejb-relationType" maxOccurs="unbounded">
  +                <xsd:unique name="role-name-uniqueness">
  +                    <xsd:selector xpath=".//j2ee:ejb-relationship-role-name"/>
  +                    <xsd:field xpath="."/>
  +                </xsd:unique>
  +            </xsd:element>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="result-type-mappingType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="Local"/>
  +                <xsd:enumeration value="Remote"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="security-identityType">
  +        <xsd:sequence>
  +            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:choice>
  +                <xsd:element name="use-caller-identity" type="j2ee:emptyType"/>
  +                <xsd:element name="run-as" type="j2ee:run-asType"/>
  +            </xsd:choice>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="session-beanType">
  +        <xsd:sequence>
  +            <xsd:group ref="j2ee:descriptionGroup"/>
  +            <xsd:element name="ejb-name" type="j2ee:ejb-nameType"/>
  +            <xsd:element name="home" type="j2ee:homeType" minOccurs="0"/>
  +            <xsd:element name="remote" type="j2ee:remoteType" minOccurs="0"/>
  +            <xsd:element name="local-home" type="j2ee:local-homeType" minOccurs="0"/>
  +            <xsd:element name="local" type="j2ee:localType" minOccurs="0"/>
  +            <xsd:element name="service-endpoint" type="j2ee:fully-qualified-classType" minOccurs="0"/>
  +            <xsd:element name="ejb-class" type="j2ee:ejb-classType"/>
  +            <xsd:element name="session-type" type="j2ee:session-typeType"/>
  +            <xsd:element name="transaction-type" type="j2ee:transaction-typeType"/>
  +            <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
  +            <xsd:element name="security-role-ref" type="j2ee:security-role-refType" minOccurs="0" maxOccurs="unbounded"/>
  +            <xsd:element name="security-identity" type="j2ee:security-identityType" minOccurs="0"/>
  +            <xsd:element name="jndi-name" type="xsd:string" minOccurs="0">
  +                <xsd:annotation>
  +                    <xsd:documentation>
  +                        The JNDI name controls where this EJB will appear in the application-wide JNDI
  +                        space.  Other application components that want to refer to this EJB can define
  +                        EJB references and map them to this JNDI location.
  +                    </xsd:documentation>
  +                </xsd:annotation>
  +            </xsd:element>
  +        </xsd:sequence>
  +        <xsd:attribute name="id" type="xsd:ID"/>
  +    </xsd:complexType>
  +    <xsd:complexType name="session-typeType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="Stateful"/>
  +                <xsd:enumeration value="Stateless"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="trans-attributeType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="NotSupported"/>
  +                <xsd:enumeration value="Supports"/>
  +                <xsd:enumeration value="Required"/>
  +                <xsd:enumeration value="RequiresNew"/>
  +                <xsd:enumeration value="Mandatory"/>
  +                <xsd:enumeration value="Never"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
  +    <xsd:complexType name="transaction-typeType">
  +        <xsd:simpleContent>
  +            <xsd:restriction base="j2ee:string">
  +                <xsd:enumeration value="Bean"/>
  +                <xsd:enumeration value="Container"/>
  +            </xsd:restriction>
  +        </xsd:simpleContent>
  +    </xsd:complexType>
   </xsd:schema>