You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/05/09 22:18:03 UTC
svn commit: r169351 [2/12] - in /incubator/beehive/trunk/system-controls: ./
ant/ external/ external/commons/ external/ejb/ external/jms/ src/ src/ejb/
src/ejb/org/ src/ejb/org/apache/ src/ejb/org/apache/beehive/
src/ejb/org/apache/beehive/controls/
src/ejb/org/apache/beehive/controls/system/
src/ejb/org/apache/beehive/controls/system/ejb/ src/ejb/schema/ src/jdbc/
src/jdbc/org/ src/jdbc/org/apache/ src/jdbc/org/apache/beehive/
src/jdbc/org/apache/beehive/controls/
src/jdbc/org/apache/beehive/controls/system/
src/jdbc/org/apache/beehive/controls/system/jdbc/
src/jdbc/org/apache/beehive/controls/system/jdbc/parser/ src/jms/
src/jms/org/ src/jms/org/apache/ src/jms/org/apache/beehive/
src/jms/org/apache/beehive/controls/
src/jms/org/apache/beehive/controls/system/
src/jms/org/apache/beehive/controls/system/jms/
src/jms/org/apache/beehive/controls/system/jms/impl/
src/jms/org/apache/beehive/controls/system/jndi/
src/jms/org/apache/beehive/controls/system/jndi/impl/ src/webservice/
src/webservice/org/ src/webservice/org/apache/
src/webservice/org/apache/beehive/
src/webservice/org/apache/beehive/controls/
src/webservice/org/apache/beehive/controls/system/
src/webservice/org/apache/beehive/controls/system/webservice/
src/webservice/org/apache/beehive/controls/system/webservice/generator/
src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/
src/webservice/org/apache/beehive/controls/system/webservice/utils/ test/
test/ant/ test/conf/ test/src/ test/src/jdbc/ test/src/jdbc/controls/
test/src/jdbc/controls/org/ test/src/jdbc/controls/org/apache/
test/src/jdbc/controls/org/apache/beehive/
test/src/jdbc/controls/org/apache/beehive/controls/
test/src/jdbc/controls/org/apache/beehive/controls/system/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/dbconnection/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/errors/
test/src/jdbc/controls/org/apache/beehive/controls/system/jdbc/test/results/
test/src/jdbc/controls/schemas/ test/src/jdbc/controls/schemas/badusers/
test/src/jdbc/controls/schemas/users/ test/src/jdbc/jdbc-container/
test/src/jdbc/jdbc-container/application/ test/src/jdbc/jdbc-container/src/
test/src/jdbc/jdbc-container/src/org/
test/src/jdbc/jdbc-container/src/org/apache/
test/src/jdbc/jdbc-container/src/org/apache/beehive/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/jdbc/
test/src/jdbc/jdbc-container/src/org/apache/beehive/controls/system/jdbc/containertest/
test/src/jdbc/jdbc-container/webapp/
test/src/jdbc/jdbc-container/webapp/WEB-INF/
test/src/jdbc/jdbc-container/webapp/conf/
test/src/jdbc/jdbc-container/webapp/conf/Catalina/
test/src/jdbc/jdbc-container/webapp/conf/Catalina/localhost/
test/src/jdbc/junitTests/ test/src/jdbc/junitTests/org/
test/src/jdbc/junitTests/org/apache/
test/src/jdbc/junitTests/org/apache/beehive/
test/src/jdbc/junitTests/org/apache/beehive/controls/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/dbconnection/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/errors/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/results/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/sqlparser/
test/src/jdbc/junitTests/org/apache/beehive/controls/system/jdbc/units/utils/
Added: incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/EntityEJBControlImpl.jcs
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/EntityEJBControlImpl.jcs?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/EntityEJBControlImpl.jcs (added)
+++ incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/EntityEJBControlImpl.jcs Mon May 9 13:17:58 2005
@@ -0,0 +1,230 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.controls.system.ejb;
+
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.util.Collection;
+import java.util.Iterator;
+import javax.ejb.EJBLocalObject;
+import javax.ejb.EJBObject;
+
+import org.apache.beehive.controls.api.ControlException;
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+
+/**
+ * The EntityEJBControlImpl class is the control implementation class for
+ * Entity EJBs.
+ */
+@ControlImplementation( assembler = EJBControlAssembler.class )
+public class EntityEJBControlImpl
+ extends EJBControlImpl
+ implements EntityEJBControl, java.io.Serializable {
+
+ static final long serialVersionUID = 1L;
+
+ public EntityEJBControlImpl()
+ {
+ super();
+ }
+
+ //
+ // Implements auto-find semantics for entity beans
+ //
+ protected Object resolveBeanInstance()
+ {
+ //
+ // Already resolved and cached
+ //
+ if (_beanInstance != null)
+ return _beanInstance;
+
+ //
+ // Attempt to resolve from a cached handle
+ //
+ _beanInstance = resolveBeanInstanceFromHandle();
+ if (_beanInstance != null)
+ return _beanInstance;
+
+ //
+ // Attempt to resolve bean instance from cached primary key
+ //
+ if (_lastKey == null)
+ throw new ControlException("Unable to locate a target bean instance, because a successful create or finder method has not been executed.");
+
+ Class [] findArgType = new Class[] { _lastKey.getClass() };
+ try
+ {
+ Method finder = _homeInterface.getMethod("findByPrimaryKey",
+ findArgType);
+ return finder.invoke(_homeInstance, new Object [] { _lastKey });
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ throw new ControlException("Unable to locate findByPrimaryKey method on home interface",nsme);
+ }
+ catch (InvocationTargetException ite)
+ {
+ _lastException = ite.getTargetException();
+ throw new ControlException("Failure to locate entity instance associated with the last primary key", _lastException);
+ }
+ catch (Exception e)
+ {
+ throw new ControlException("Unexpected exception in auto-find",e);
+ }
+ }
+
+ protected boolean saveBeanInstance()
+ {
+ //
+ // First, delegate to parent (handle-based persistence)
+ //
+ if (super.saveBeanInstance())
+ return true;
+
+ //
+ // Fall back to persistence using a saved primary key value
+ //
+ try
+ {
+ if (_beanInstance instanceof EJBObject)
+ _lastKey = (Serializable)((EJBObject)_beanInstance).getPrimaryKey();
+ else
+ _lastKey = (Serializable)((EJBLocalObject)_beanInstance).getPrimaryKey();
+ }
+ catch (RemoteException re)
+ {
+ throw new ControlException("Unable to save bean instance", re);
+ }
+ return true;
+ }
+
+ //
+ // Release the bean instance. Entity bean instances are *never* removed, except via
+ // direct client calls to the remove method.
+ //
+ protected void releaseBeanInstance(boolean alreadyRemoved)
+ {
+ super.releaseBeanInstance(alreadyRemoved);
+
+ // Release any cached primary key value
+ _lastKey = null;
+ }
+
+ private boolean isMultiSelectorMethod(Method m)
+ {
+ if (isFinderMethod(m) &&
+ m.getReturnType().isAssignableFrom(Collection.class))
+ return true;
+ return false;
+ }
+
+ //
+ // This method wraps the base EJBControlImpl invoke, doing the additional
+ // work to maintain the primary key cache for methods which alter the
+ // target bean instance.
+ //
+ public Object invoke(Method m, Object [] args) throws Throwable
+ {
+ Throwable invokeException = null;
+ Object retval = null;
+ Object currentBeanInstance = _beanInstance;
+ try
+ {
+ retval = super.invoke(m, args);
+ }
+ catch (Exception t)
+ {
+ // a tasty treat, but I'll throw up later
+ invokeException = t;
+ }
+
+ if (isMultiSelectorMethod(m))
+ {
+ releaseBeanInstance(false);
+
+ Collection collection = (Collection)retval;
+ if (collection != null && !collection.isEmpty())
+ {
+ _colIter = collection.iterator();
+ _beanInstance = beanNarrow(_colIter.next());
+ }
+ else
+ {
+ releaseBeanInstance(false);
+ }
+ }
+ else if (isSelectorMethod(m))
+ {
+ // Release collection results if a single select method is called.
+ _colIter = null;
+ }
+
+ if (invokeException != null)
+ throw invokeException;
+
+ return retval;
+ }
+
+ /**
+ * EntityEJBControl.getEJBNextBeanInstance()
+ */
+ public Object getEJBNextBeanInstance()
+ {
+ if (_colIter == null)
+ return null;
+
+ if (!_colIter.hasNext())
+ {
+ releaseBeanInstance(false);
+ return null;
+ }
+
+ _beanInstance = beanNarrow(_colIter.next());
+ return _beanInstance;
+ }
+
+ //
+ // Override the onCreate event handler that was already defined in EJBControlImpl to
+ // add additional processing.
+ //
+ public void onCreate()
+ {
+ super.onCreate();
+ if (_beanType != EJBControlImpl.ENTITY_BEAN)
+ {
+ throw new ControlException("Attempting to use a entity bean control with a bean that is not a entity bean");
+ }
+ }
+
+ //
+ // Override the onReset event handler that was already defined in EJBControlImpl to
+ // add additional processing.
+ //
+ public void onReset()
+ {
+ super.onReset();
+ _lastKey = null;
+ _colIter = null;
+ }
+
+ private Serializable _lastKey; // primary key of the selected instance
+ transient private Iterator _colIter; // multi-finder result iterator
+}
Added: incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControl.java?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControl.java (added)
+++ incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControl.java Mon May 9 13:17:58 2005
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.controls.system.ejb;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+
+/**
+ * As part of the EJB control, this interface simplifies access to
+ * session Enterprise JavaBeans (EJBs). You do not need to use
+ * this interface directly.
+ * <br/><br/>
+ * The EJB control is actually made up of two main interfaces,
+ * one for access to entity EJBs
+ * and another for access to session EJBs. The presence of these
+ * two interfaces is invisible when you use the EJB control; their
+ * methods are called behind the scenes.
+ * <br/><br/>
+ * Typically, you use the EJB control by adding the control to a
+ * component design (such as a web service or pageflow design),
+ * then calling the methods it provides. Those methods are not
+ * exposed by these control interfaces, but rather are extensions
+ * of the EJB itself that are generated when you add
+ * the EJB control.
+ * <br/><br/>
+ * For more information about using the EJB control, see
+ * <a href="../../../../guide/controls/ejb/navEJBControl.html">EJB Control</a>.
+ */
+@ControlInterface (defaultBinding="org.apache.beehive.controls.system.ejb.SessionEJBControlImpl")
+public interface SessionEJBControl extends EJBControl
+{
+
+}
Added: incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControlImpl.jcs
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControlImpl.jcs?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControlImpl.jcs (added)
+++ incubator/beehive/trunk/system-controls/src/ejb/org/apache/beehive/controls/system/ejb/SessionEJBControlImpl.jcs Mon May 9 13:17:58 2005
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.controls.system.ejb;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import javax.ejb.EJBObject;
+import javax.ejb.EJBLocalObject;
+
+import org.apache.beehive.controls.api.ControlException;
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+
+/**
+ * The SessionEJBControlImpl class is the control implementation class for
+ * Stateless/Stateful Session EJBs.
+ *
+ * Currently, this is a noop since no session-bean specific control APIs
+ * are defined, but having a unique control interface/impl class still allows
+ * JellyBeans to create two different control types.
+ *
+ */
+@ControlImplementation( assembler = EJBControlAssembler.class )
+public class SessionEJBControlImpl
+ extends EJBControlImpl
+ implements SessionEJBControl, java.io.Serializable
+{
+ static final long serialVersionUID = 1L;
+ //
+ // Override ejbControl.onCreate to perform additional processing
+ //
+ public void onCreate()
+ {
+ super.onCreate();
+ if (_beanType != EJBControlImpl.SESSION_BEAN)
+ {
+ throw new ControlException("Attempting to use a session bean control with a bean that is not a session bean");
+ }
+ }
+
+ /**
+ * Implements auto-create semantics for Session beans.
+ */
+ protected Object resolveBeanInstance()
+ {
+ //
+ // First, try to resolve from a cached EJB handle (if any)
+ //
+ Object fromHandle = resolveBeanInstanceFromHandle();
+ if (fromHandle != null)
+ {
+ return fromHandle;
+ }
+
+ // Find null arg create() on the home interface, and use it to get
+ // an instance
+ try
+ {
+ // TODO: for efficiency, this could be done once per home
+ // interface and cached.
+ Method createMethod = _homeInterface.getMethod("create", new Class []{ });
+ Object beanInstance = createMethod.invoke(_homeInstance, null);
+ _autoCreated = true;
+ return beanInstance;
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ throw new ControlException("Cannot auto-create session bean instance because no null argument create() method exists. To use this bean, you will need to call create() directly with the appropriate parameters");
+ }
+ catch (InvocationTargetException ite)
+ {
+ _lastException = ite.getTargetException();
+
+ throw new ControlException("Unable to create session bean instance", _lastException);
+ }
+ catch (Exception e)
+ {
+ throw new ControlException("Unable to invoke home interface create method",e);
+ }
+ }
+
+ protected void releaseBeanInstance(boolean alreadyRemoved)
+ {
+ //
+ // For session EJBs, releasing the instance implies the physical
+ // removal of the bean instance. If the bean was auto-created by
+ // the control, it has responsibility for deleting.
+ //
+ if (_beanInstance != null && _autoCreated && !alreadyRemoved)
+ {
+ try
+ {
+ if (EJBObject.class.isAssignableFrom(_beanInterface))
+ ((EJBObject)_beanInstance).remove();
+ else
+ ((EJBLocalObject)_beanInstance).remove();
+ }
+ catch (Exception e) // RemoteException or REmoveException
+ {
+ _lastException = e;
+ }
+ }
+
+ super.releaseBeanInstance(alreadyRemoved);
+ }
+
+ /**
+ * Set to true if the EJB instance was autocreated as a result of a bean method
+ * call (as opposed to direct invocation of the home create() method).
+ */
+ boolean _autoCreated = false;
+}
Added: incubator/beehive/trunk/system-controls/src/ejb/schema/config.xsdconfig
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/ejb/schema/config.xsdconfig?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/src/ejb/schema/config.xsdconfig (added)
+++ incubator/beehive/trunk/system-controls/src/ejb/schema/config.xsdconfig Mon May 9 13:17:58 2005
@@ -0,0 +1,5 @@
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
+ <xb:namespace uri="http://java.sun.com/xml/ns/j2ee">
+ <xb:package>org.apache.beehive.controls.system.ejb.schemas.j2ee</xb:package>
+ </xb:namespace>
+</xb:config>
Added: incubator/beehive/trunk/system-controls/src/ejb/schema/ejb-jar_2_1.xsd
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/system-controls/src/ejb/schema/ejb-jar_2_1.xsd?rev=169351&view=auto
==============================================================================
--- incubator/beehive/trunk/system-controls/src/ejb/schema/ejb-jar_2_1.xsd (added)
+++ incubator/beehive/trunk/system-controls/src/ejb/schema/ejb-jar_2_1.xsd Mon May 9 13:17:58 2005
@@ -0,0 +1,2207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://java.sun.com/xml/ns/j2ee"
+ xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="2.1">
+ <xsd:annotation>
+ <xsd:documentation>
+ @(#)ejb-jar_2_1.xsds 1.23 08/01/03
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Copyright 2003 Sun Microsystems, Inc., 901 San Antonio
+ Road, Palo Alto, California 94303, U.S.A. All rights
+ reserved.
+
+ Sun Microsystems, Inc. has intellectual property rights
+ relating to technology described in this document. In
+ particular, and without limitation, these intellectual
+ property rights may include one or more of the U.S. patents
+ listed at http://www.sun.com/patents and one or more
+ additional patents or pending patent applications in the
+ U.S. and other countries.
+
+ This document and the technology which it describes are
+ distributed under licenses restricting their use, copying,
+ distribution, and decompilation. No part of this document
+ may be reproduced in any form by any means without prior
+ written authorization of Sun and its licensors, if any.
+
+ Third-party software, including font technology, is
+ copyrighted and licensed from Sun suppliers.
+
+ Sun, Sun Microsystems, the Sun logo, Solaris, Java, J2EE,
+ JavaServer Pages, Enterprise JavaBeans and the Java Coffee
+ Cup logo are trademarks or registered trademarks of Sun
+ Microsystems, Inc. in the U.S. and other countries.
+
+ Federal Acquisitions: Commercial Software - Government Users
+ Subject to Standard License Terms and Conditions.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ This is the XML Schema for the EJB 2.1 deployment descriptor.
+ The deployment descriptor must be named "META-INF/ejb-jar.xml" in
+ the EJB's jar file. All EJB deployment descriptors must indicate
+ the ejb-jar schema by using the J2EE namespace:
+
+ http://java.sun.com/xml/ns/j2ee
+
+ and by indicating the version of the schema by
+ using the version element as shown below:
+
+ <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+ http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+ version="2.1">
+ ...
+ </ejb-jar>
+
+ The instance documents may indicate the published version of
+ the schema using the xsi:schemaLocation attribute for the
+ J2EE namespace with the following location:
+
+ http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The following conventions apply to all J2EE
+ deployment descriptor elements unless indicated otherwise.
+
+ - In elements that specify a pathname to a file within the
+ same JAR file, relative filenames (i.e., those not
+ starting with "/") are considered relative to the root of
+ the JAR file's namespace. Absolute filenames (i.e., those
+ starting with "/") also specify names in the root of the
+ JAR file's namespace. In general, relative names are
+ preferred. The exception is .war files where absolute
+ names are preferred for consistency with the Servlet API.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:include schemaLocation="j2ee_1_4.xsd"/>
+
+
+<!-- **************************************************** -->
+
+
+ <xsd:element name="ejb-jar" type="j2ee:ejb-jarType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ This is the root of the ejb-jar deployment descriptor.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:key name="ejb-name-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-name element contains the name of an enterprise
+ bean. The name must be unique within the ejb-jar file.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The keyref indicates the references from
+ relationship-role-source must be to a specific ejb-name
+ defined within the scope of enterprise-beans element.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ A role-name-key is specified to allow the references
+ from the security-role-refs.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The keyref indicates the references from
+ security-role-ref to a specified role-name.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The activation-config-propertyType contains a name/value
+ configuration property pair for a message-driven bean.
+
+ The properties that are recognized for a particular
+ message-driven bean are determined by the messaging type.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:element name="activation-config-property-name"
+ type="j2ee:xsdStringType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-config-property-name element contains
+ the name for an activation configuration property of
+ a message-driven bean.
+
+ For JMS message-driven beans, the following property
+ names are recognized: acknowledgeMode,
+ messageSelector, destinationType, subscriptionDurability
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="activation-config-property-value"
+ type="j2ee:xsdStringType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-config-property-value element
+ contains the value for an activation configuration
+ property of a message-driven bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="activation-configType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-configType defines information about the
+ expected configuration properties of the message-driven bean
+ in its operational environment. This may include information
+ about message acknowledgement, message selector, expected
+ destination type, etc.
+
+ The configuration information is expressed in terms of
+ name/value configuration properties.
+
+ The properties that are recognized for a particular
+ message-driven bean are determined by the messaging type.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="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:annotation>
+ <xsd:documentation>
+
+ The assembly-descriptorType defines
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The cmp-fieldType describes a container-managed field. The
+ cmp-fieldType contains an optional description of the field,
+ and the name of the field.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="j2ee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="field-name"
+ type="j2ee:java-identifierType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="cmp-versionType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cmp-versionType specifies the version of an entity bean
+ with container-managed persistence. It is used by
+ cmp-version elements.
+
+ The value must be one of the two following:
+
+ 1.x
+ 2.x
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The cmr-field-type element specifies the class of a
+ collection-valued logical relationship field in the entity
+ bean class. The value of an element using cmr-field-typeType
+ must be either: java.util.Collection or java.util.Set.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The cmr-fieldType 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="j2ee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="cmr-field-name"
+ type="j2ee:string">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ 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".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:annotation>
+ <xsd:documentation>
+
+ The container-transactionType specifies how the container
+ must manage transaction scopes for the enterprise bean's
+ method invocations. It defines an optional description, a
+ list of method elements, and a transaction attribute. The
+ transaction attribute is to be applied to all the specified
+ methods.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ The ejb-classType contains the fully-qualified name of the
+ enterprise bean's class. It is used by ejb-class elements.
+
+ Example:
+
+ <ejb-class>com.wombat.empl.EmployeeServiceBean</ejb-class>
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="j2ee:fully-qualified-classType"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-jarType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-jarType defines the root element of the EJB
+ deployment descriptor. It contains
+
+ - an optional description of the ejb-jar file
+ - an optional display name
+ - an optional icon that contains a small and a 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:group ref="j2ee:descriptionGroup"/>
+ <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:annotation>
+ <xsd:documentation>
+
+ The ejb-relation-name contains the name of a
+ relation. The name must be unique within
+ relationships.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ Providing an assembly-descriptor in the deployment
+ descriptor is optional for the ejb-jar file
+ producer.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="ejb-client-jar"
+ type="j2ee:pathType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ 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.
+
+ Example:
+
+ <ejb-client-jar>employee_service_client.jar
+ </ejb-client-jar>
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="version"
+ type="j2ee:dewey-versionType"
+ fixed="2.1"
+ use="required">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The version specifies the version of the
+ EJB specification that the instance document must
+ comply with. This information enables deployment tools
+ to validate a particular EJB Deployment
+ Descriptor with respect to a specific version of the EJB
+ schema.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-nameType">
+ <xsd:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ The ejb-nameType specifies an enterprise bean's name. It is
+ used by ejb-name elements. 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 used
+ 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 must conform to the lexical
+ rules for an NMTOKEN.
+
+ Example:
+
+ <ejb-name>EmployeeService</ejb-name>
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="j2ee:xsdNMTOKENType"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-relationType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-relationType describes a relationship between two
+ entity beans with container-managed persistence. It is used
+ by ejb-relation elements. It 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The ejb-relation-name element provides a unique name
+ within the ejb-jar file for a relationship.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ The ejb-relationship-roleType describes a role within a
+ relationship. There are two roles in each relationship.
+
+ The ejb-relationship-roleType 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.
+
+ 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>
+ </ejb-relation>
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="multiplicity"
+ type="j2ee:multiplicityType"/>
+ <xsd:element name="cascade-delete"
+ type="j2ee:emptyType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:annotation>
+ <xsd:documentation>
+
+ The enterprise-beansType declares one or more enterprise
+ beans. Each bean can be a session, entity or message-driven
+ bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="session"
+ type="j2ee:session-beanType">
+ <xsd:unique name="session-ejb-local-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of
+ an EJB reference. The EJB reference is an entry in
+ the component's environment and is relative to the
+ java:comp/env context. The name must be unique within
+ the component.
+
+ It is recommended that name be prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:ejb-local-ref"/>
+ <xsd:field xpath="j2ee:ejb-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="session-ejb-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of an EJB
+ reference. The EJB reference is an entry in the
+ component's environment and is relative to the
+ java:comp/env context. The name must be unique
+ within the component.
+
+ It is recommended that name is prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:ejb-ref"/>
+ <xsd:field xpath="j2ee:ejb-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="session-resource-env-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:resource-env-ref"/>
+ <xsd:field xpath="j2ee:resource-env-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="session-message-destination-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-destination-ref-name element specifies the name
+ of a message destination reference; its value is
+ the message destination reference name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:message-destination-ref"/>
+ <xsd:field xpath="j2ee:message-destination-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="session-res-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference. The name
+ is a JNDI name relative to the java:comp/env context.
+ The name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:resource-ref"/>
+ <xsd:field xpath="j2ee:res-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="session-env-entry-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The env-entry-name element contains the name of a
+ component's environment entry. The name is a JNDI
+ name relative to the java:comp/env context. The
+ name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="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:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of
+ an EJB reference. The EJB reference is an entry in
+ the component's environment and is relative to the
+ java:comp/env context. The name must be unique within
+ the component.
+
+ It is recommended that name be prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:ejb-local-ref"/>
+ <xsd:field xpath="j2ee:ejb-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="entity-ejb-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of an EJB
+ reference. The EJB reference is an entry in the
+ component's environment and is relative to the
+ java:comp/env context. The name must be unique
+ within the component.
+
+ It is recommended that name is prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:ejb-ref"/>
+ <xsd:field xpath="j2ee:ejb-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="entity-resource-env-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:resource-env-ref"/>
+ <xsd:field xpath="j2ee:resource-env-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="entity-message-destination-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-destination-ref-name element specifies the name
+ of a message destination reference; its value is
+ the message destination reference name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:message-destination-ref"/>
+ <xsd:field xpath="j2ee:message-destination-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="entity-res-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference. The name
+ is a JNDI name relative to the java:comp/env context.
+ The name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:resource-ref"/>
+ <xsd:field xpath="j2ee:res-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="entity-env-entry-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The env-entry-name element contains the name of a
+ component's environment entry. The name is a JNDI
+ name relative to the java:comp/env context. The
+ name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="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:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of
+ an EJB reference. The EJB reference is an entry in
+ the component's environment and is relative to the
+ java:comp/env context. The name must be unique within
+ the component.
+
+ It is recommended that name be prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:ejb-local-ref"/>
+ <xsd:field xpath="j2ee:ejb-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="messaged-ejb-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of an EJB
+ reference. The EJB reference is an entry in the
+ component's environment and is relative to the
+ java:comp/env context. The name must be unique
+ within the component.
+
+ It is recommended that name is prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:ejb-ref"/>
+ <xsd:field xpath="j2ee:ejb-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="messaged-resource-env-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:resource-env-ref"/>
+ <xsd:field xpath="j2ee:resource-env-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="messaged-message-destination-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-destination-ref-name element specifies the name
+ of a message destination reference; its value is
+ the message destination reference name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:message-destination-ref"/>
+ <xsd:field xpath="j2ee:message-destination-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="messaged-res-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference. The name
+ is a JNDI name relative to the java:comp/env context.
+ The name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="j2ee:resource-ref"/>
+ <xsd:field xpath="j2ee:res-ref-name"/>
+ </xsd:unique>
+
+ <xsd:unique name="messaged-env-entry-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The env-entry-name element contains the name of a
+ component's environment entry. The name is a JNDI
+ name relative to the java:comp/env context. The
+ name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="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:annotation>
+ <xsd:documentation>
+
+ The entity-beanType declares an entity bean. The declaration
+ consists of:
+
+ - an optional description
+ - an optional display name
+ - an optional icon element that contains a small and a 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 bean's web
+ service 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 declaration of the bean's message
+ destination 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="reentrant"
+ type="j2ee:true-falseType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The reentrant element specifies whether an entity
+ bean is reentrant or not.
+
+ The reentrant element must be one of the two
+ following: true or false
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="cmp-version"
+ type="j2ee:cmp-versionType"
+ minOccurs="0"/>
+ <xsd:element name="abstract-schema-name"
+ type="j2ee:java-identifierType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="cmp-field"
+ type="j2ee:cmp-fieldType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="primkey-field"
+ type="j2ee:string"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="exclude-listType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The exclude-listType 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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="message-driven-beanType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-driven element declares a message-driven
+ bean. The declaration consists of:
+
+ - an optional description
+ - an optional display name
+ - an optional icon element that contains a small and a large
+ icon file name.
+ - a name assigned to the enterprise bean in
+ the deployment descriptor
+ - the message-driven bean's implementation class
+ - an optional declaration of the bean's messaging
+ type
+ - the message-driven bean's transaction management type
+ - an optional declaration of the bean's
+ message-destination-type
+ - an optional declaration of the bean's
+ message-destination-link
+ - an optional declaration of the message-driven bean's
+ activation configuration properties
+ - 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 bean's web service
+ 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 declaration of the bean's message
+ destination references
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The messaging-type element specifies the message
+ listener interface of the message-driven bean. If
+ the messaging-type element is not specified, it is
+ assumed to be javax.jms.MessageListener.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:annotation>
+ <xsd:documentation>
+
+ 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 home and
+ component interfaces (e.g, in both an enterprise bean's
+ remote and local interfaces or in both an enterprise bean's
+ home and remote interfaces, etc.); the component and web
+ service endpoint interfaces, and so on.
+
+ The method-intf element must be one of the following:
+
+ Home
+ Remote
+ LocalHome
+ Local
+ ServiceEndpoint
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The method-nameType 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 client view interfaces.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="j2ee:string"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="method-paramsType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-paramsType defines a list of the
+ fully-qualified Java type names of the method parameters.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence>
+ <xsd:element name="method-param"
+ type="j2ee:java-typeType"
+ minOccurs="0"
+ maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-param element contains a primitive
+ or a fully-qualified Java type name of a method
+ parameter.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="method-permissionType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-permissionType specifies that one or more
+ security roles are allowed to invoke one or more enterprise
+ bean methods. The method-permissionType 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-permissionType
+ must be defined in the security-role elements of the
+ deployment descriptor, and the methods must be methods
+ defined in the enterprise bean's home, component and/or web
+ service endpoint interfaces.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The unchecked element specifies that a method is
+ not checked for authorization by the container
+ prior to invocation of the method.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </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:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ The methodType is used to denote a method of an enterprise
+ bean's home, component, and/or web service endpoint
+ interface, or, in the case of a message-driven bean, the
+ bean's message listener method, or a set of such
+ 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 the home, component, and/or web service endpoint
+ 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 using methodType element
+ within a method element:
+
+ 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, component, and/or web
+ service endpoint 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.
+
+ Examples:
+
+ Style 1: The following method element refers to all the
+ methods of the EmployeeService bean's home, component,
+ and/or web service endpoint 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, component, and/or
+ web service endpoint 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 th ree 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>
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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>
+ <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:annotation>
+ <xsd:documentation>
+
+ The multiplicityType describes the multiplicity of the
+ role that participates in a relation.
+
+ The value must be one of the two following:
+
+ One
+ Many
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The persistence-typeType specifies an entity bean's persistence
+ management type.
+
+ The persistence-type element must be one of the two following:
+
+ Bean
+ Container
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+ <![CDATA[
+
+ The query-method specifies 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.
+
+ It is used by the query-method element.
+
+ 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 > 1000
+ </ejb-ql>
+ </query>
+
+ ]]>
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The queryType defines 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".
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="relationship-role-sourceType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The relationship-role-sourceType designates the source of a
+ role that participates in a relationship. A
+ relationship-role-sourceType is used by
+ relationship-role-source elements to uniquely identify an
+ entity bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The relationshipsType describes the relationships in
+ which entity beans with container-managed persistence
+ participate. The relationshipsType contains an optional
+ description; and a list of ejb-relation elements, which
+ specify the container managed relationships.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The ejb-relationship-role-name contains the name of a
+ relationship role. The name must be unique within
+ a relationship, but can be reused in different
+ relationships.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The result-type-mappingType 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 value must be one of the following:
+
+ Local
+ Remote
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The security-identityType 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ 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.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:annotation>
+ <xsd:documentation>
+
+ The session-beanType declares an session bean. The
+ declaration consists of:
+
+ - an optional description
+ - an optional display name
+ - an optional icon element that contains a small and a 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 name of the session bean's web service endpoint
+ interface, 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 bean's web
+ service 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 declaration of the bean's message
+ destination 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.
+
+ The service-endpoint element may only be specified if the
+ bean is a stateless session bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <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:annotation>
+ <xsd:documentation>
+
+ The service-endpoint element contains the
+ fully-qualified name of the enterprise bean's web
+ service endpoint interface. The service-endpoint
+ element may only be specified for a stateless
+ session bean. The specified interface must be a
+ valid JAX-RPC service endpoint interface.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <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:sequence>
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:complexType>
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="session-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The session-typeType describes whether the session bean is a
+ stateful session or stateless session. It is used by
+ session-type elements.
+
+ The value must be one of the two following:
+
+ Stateful
+ Stateless
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The trans-attributeType specifies how the container must
+ manage the transaction boundaries when delegating a method
+ invocation to an enterprise bean's business method.
+
+ The value must be one of the following:
+
+ NotSupported
+ Supports
+ Required
+ RequiresNew
+ Mandatory
+ Never
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <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:annotation>
+ <xsd:documentation>
+
+ The transaction-typeType specifies an enterprise bean's
+ transaction management type.
+
+ The transaction-type must be one of the two following:
+
+ Bean
+ Container
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="j2ee:string">
+ <xsd:enumeration value="Bean"/>
+ <xsd:enumeration value="Container"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+</xsd:schema>
+