<!--
This is the DTD for the EJB deployment parameters that are specific to the 
WebLogic server in WebLogic 5.1.0.

Copyright (c) 1999-2000 by BEA Systems, Inc. All Rights Reserved.
-->



<!--
The caching-descriptor element is used to specify various options for the 
caching of a bean in the WebLogic Server.

Used in: weblogic-enterprise-bean
-->
<!ELEMENT caching-descriptor (    
    max-beans-in-free-pool?, 
    initial-beans-in-free-pool?, 
    max-beans-in-cache?,
    idle-timeout-seconds?,
    cache-strategy?,
    passivation-strategy?,
    read-timeout-seconds?)
>



<!--
The clustering-descriptor is used to specify various options for how a bean
will be replicated in a WebLogic cluster

Used in: weblogic-enterprise-bean
-->
<!ELEMENT clustering-descriptor (
    home-is-clusterable?,
    home-load-algorithm?,
    home-call-router-class-name?,
    stateless-bean-is-clusterable?,
    stateless-bean-load-algorithm?,
    stateless-bean-call-router-class-name?,
    stateless-bean-methods-are-idempotent?)
>
 

<!--
The value of db-is-shared must be "True" or "False".

This parameter applies only to entity beans using container-managed 
persistence. If the value is set to "False" the container will assume that it 
has exclusive access to the bean data in the persistence store. If it is set 
to "True" the bean will assume that the bean data could be modified between
transactions and will therefore reload data at the beginning of each 
transaction.
-->
<!ELEMENT db-is-shared (#PCDATA)>

   
<!--
Applicable to entity beans only (both container- and bean-managed).
This optional optimization affects when changes to a bean's state
propogated to the persistent store. If this is set to "True" (which is
the default) updates of the persistent store of all beans in the
transaction will be performed just before the end of the transaction.
If this is set to "False" the pstore update of a bean will be
performed at the conclusion of each method invoke.

Used in: persistence-descriptor
-->
<!ELEMENT delay-updates-until-end-of-tx (#PCDATA)>



<!-- 
The description element is used to provide text describing the parent element.

Used in: weblogic-ejb-jar 
-->
<!ELEMENT description (#PCDATA)>



<!--
The ejb-name element specifies an enterprise bean's name. This name is
assigned by the ejb-jar file producer to name the enterprise bean in
the ejb-jar file's deployment descriptor. The name must be unique
among the names of the enterprise beans in the same ejb-jar file. The
enterprise bean code does not depend on the name; therefore the name
can be changed during the application-assembly process without
breaking the enterprise bean's function. There is no architected
relationship between the ejb-name in the deployment descriptor and the
JNDI name that the Deployer will assign to the enterprise bean's home.
The name must conform to the lexical rules for an NMTOKEN.

Used in: weblogic-enterprise-bean.

Example:
<ejb-name>EmployeeService</ejb-name>
-->
<!ELEMENT ejb-name (#PCDATA)>

<!--
The ejb-ref-name element contains the name of an EJB reference. The
EJB reference is an entry in the enterprise bean's environment.

Used in: ejb-reference-description

Example: 
<ejb-ref-name>ejb/EmplRecords</ejb-ref-name>

-->
<!ELEMENT ejb-ref-name (#PCDATA)>


<!--
The ejb-reference-description is used to map the JNDI name in the WebLogic 
server of an EJB that is referenced by the bean in an ejb-reference.

 Used in: reference-descriptor

 Example:
     <ejb-reference-description>
	<ejb-ref-name>
	  AdminBean
	</ejb-ref-name>
        <jndi-name>
	  payroll.AdminBean
        </jndi-name>
     </ejb-reference-description>
-->
<!ELEMENT ejb-reference-description (ejb-ref-name, jndi-name)>


<!--
By default, parameters to EJB methods are copied (pass by value) in 
accordance with the EJB 1.1 specification.  Pass by value is always
necessary when the EJB is called remotely (not from within the server).
By setting enable-call-by-reference to "True", EJB methods called from
within the same server will pass arguments by reference.  This increases
the performance of method invocation since parameters are not copied.

The value of enable-call-by-reference must be "True" or "False".

Used in: weblogic-enterprise-bean
-->
<!ELEMENT enable-call-by-reference (#PCDATA)>


<!--
Applicable to entity beans only (both container- and bean-managed).
This optional optimization affects whether the bean is loaded immediately
into the cache (followed by invoke of ejbLoad) after a call to 
a finder returns a reference to a bean.

If this is set to "True", the bean will immediately be loaded into the cache
if a reference to a bean is returned by the finder. If this is set to 
"False", the bean will not be loaded into the cache until the first invoke
of the bean.

The default value is "False", which supports the behavior indicated by the 
EJB 1.1 specification.

Used in: persistence-descriptor
-->

<!ELEMENT finders-call-ejbload (#PCDATA)>



<!--
The valid values of the home-is-clusterable parameter are 
"True" or "False."

If "True," this bean can be deployed from multiple servers
in a cluster.  Calls to the home stub will be load-balanced
between the servers on which this bean is deployed, and if
a server hosting the bean is unreachable, the call will
automatically failover to another server hosting the bean.

Used in: clustering-descriptor
-->
<!ELEMENT home-is-clusterable (#PCDATA)>



<!--
The home-load-algorithm specifies the algorithm to use for load-balancing 
between replicas of this home.  If this property is not specified, the 
algorithm specified by the server property 
weblogic.cluster.defaultLoadAlgorithm will be used.  

The value of this element must be one of the following:
  RoundRobin
  Random
  WeightBased

Used in: clustering-descriptor
-->
<!ELEMENT home-load-algorithm (#PCDATA)>


<!--
The home-call-router-class-name specifies a custom class to be used for 
routing home method calls.  This class must implement
weblogic.rmi.extensions.CallRouter.  If specified, an instance of
this class will be called before each method call and be given the
opportunity to choose a server to route to based on the method
parameters.  It either returns a server name or null indicating
that the current load algorithm should be used to pick the server.

Used in: clustering-descriptor
-->
<!ELEMENT home-call-router-class-name (#PCDATA)>


<!--
The cache (see "max-beans-in-cache" above) is scrubbed of
inactive objects after at least this many seconds. Objects 
scrubbed are passivated.

Used in: caching-descriptor
-->
<!ELEMENT idle-timeout-seconds (#PCDATA)>

<!--
The passivation-strategy can be either "default" or "transaction".  With
the default setting the container will attempt to keep a working set
of beans in the cache.  With the "transaction" setting, the container will 
passivate the bean after every transaction (or method call for a 
non-transactional invocation).

Used in: caching-descriptor
-->
<!ELEMENT passivation-strategy (#PCDATA)>


<!--
The cache-strategy can be one of "Read-Only"
or "Read-Write".  The default is "Read-Write". 

Used in: caching-descriptor
-->
<!ELEMENT cache-strategy (#PCDATA)>

<!--
The read-timeout-seconds is the number of seconds between ejbLoad calls on 
a Read-Only entity bean.  If read-timeout-seconds is 0, 
ejbLoad will only be called when the bean is brought into the cache.

Used in: caching-descriptor
-->
<!ELEMENT read-timeout-seconds (#PCDATA)>


<!--
Applies to entity beans. The name of an EJBean method that tells the
container whether the bean data has been modified. The method is
called when the EJBean is stored. If a method is not specified,
WebLogic always assumes that the EJBean has been modified and always
saves it. Providing a method and setting it as appropriate will
improve performance.

Used in: persistence-desciptor
-->
<!ELEMENT is-modified-method-name (#PCDATA)>


<!-- 
This specifies a jndi-name for a bean, resource or reference.

Used in: weblogic-enterprise-bean, reference-descriptor
-->
<!ELEMENT jndi-name (#PCDATA)>



<!--
Maximum number of objects of this class that are allowed in memory.
Objects are kept in an LRU chain, and the ones dropped from the
end of the chain are passivated.

Used in: caching-descriptor
-->
<!ELEMENT max-beans-in-cache (#PCDATA)>



<!--
WebLogic EJB maintains a free pool of beans for every bean class.
This property decides the maximum size of the pool.

Used in: caching-descriptor
-->
<!ELEMENT max-beans-in-free-pool (#PCDATA)>

<!--
WebLogic EJB maintains a free pool of beans for every bean class.
This property decides the initial size of the pool.

Used in: caching-descriptor
-->
<!ELEMENT initial-beans-in-free-pool (#PCDATA)>



<!--
The persistence-descriptor is used to specify persistence options for entity
beans

Used in: weblogic-enterprise-bean
-->
<!ELEMENT persistence-descriptor (
    is-modified-method-name?,
    delay-updates-until-end-of-tx?,
    finders-call-ejbload?,
    persistence-type*, 
    db-is-shared?, 
    stateful-session-persistent-store-dir?,
    persistence-use?)
>


<!--
A persistence-type is a holder for data that is particular to a particular
bean's use of a particular persistence type.

Used in: persistence-descriptor

Example:
    <persistence-type>
        <type-identifier>...</type-identifier>
        ...
    </persistence-type>
-->
<!ELEMENT persistence-type (
    type-identifier,
    type-version,
    type-storage
)>


<!--
The persistence-use tag stores an identifier of the Persistence Type to be 
used for this particular bean.

Used in: persistence-descriptor

Example:
    <persistence-use>
        <type-identifier>WebLogic_CMP_JDBC</type-identifier>
        <type-version>1.3.2</type-version>
    </persistence-use>
-->
<!ELEMENT persistence-use (type-identifier, type-version)>

<!--
The principal-name element contains the name of a principal.

Used in: security-role-assignment
-->
<!ELEMENT principal-name (#PCDATA)>


<!--
The res-ref-name element specifies the name of a resource factory
reference.

Used in: reference-descriptor

-->
<!ELEMENT res-ref-name (#PCDATA)>

<!--
The resource-description is used to map the JNDI name in the WebLogic 
server of a server resource that is used by a bean to an EJB resource 
reference.

 Used in: reference-descriptor

 Example:
     <resource-description>
	<res-ref-name>
	  jdbc/EmployeeAppDB
	</res-ref-name>
        <jndi-name>
	  weblogic.jdbc.jts.ejbPool
        </jndi-name>
     </resource-description>
-->
<!ELEMENT resource-description (res-ref-name, jndi-name)>


<!--
The reference-descriptor specifies a list of resource-descriptions that
describe the resources used in the bean.

 Used in: weblogic-enterprise-bean

 Example:
     <reference-descriptor>
        <resource-description>
	  <res-ref-name>
	    jdbc/EmployeeAppDB
	  </res-ref-name>
	  <jndi-name>
	    weblogic.jdbc.jts.ejbPool
	  </jndi-name>
        </resource-description>
        <resource-description>
	  <res-ref-name>
	    jdbc/PersonDB
	  </res-ref-name>
	  <jndi-name>
	    weblogic.jdbc.jts.personPool
	  </jndi-name>
        </resource-description>
     </reference-descriptor>
-->
<!ELEMENT reference-descriptor (
  resource-description*,
  ejb-reference-description*
)>

<!--
The role-name element contains the name of a security role.

Used in: security-role-assignment
-->
<!ELEMENT role-name (#PCDATA)>


<!--
The security-role-assigment declares a mapping between an EJB security role
and one or more principals in the WebLogic server.

Example:
   <security-role-assignment>
     <role-name>
       PayrollAdmin
     </role-name>
     <principal-name>
       Tanya
     </principal-name>
     <principal-name>
       Fred
     </principal-name>
     <principal-name>
       system
     </principal-name>
   </security-role-assignment>

Used in: weblogic-ejb-jar
-->
<!ELEMENT security-role-assignment (role-name, principal-name+)>

<!--
The stateful-session-persistent-store-dir specifies the directory in the
server's file system where the state of passivated stateful session beans is 
to be stored.

Used in: persistence-descriptor
-->
<!ELEMENT stateful-session-persistent-store-dir (#PCDATA)>


<!--
The stateless-bean-call-router-class-name specifies a custom class 
to be used for routing bean method calls.  This class must implement
weblogic.rmi.extensions.CallRouter.  If specified, an instance of
this class will be called before each method call and be given the
opportunity to choose a server to route to based on the method
parameters.  It either returns a server name or null indicating
that the current load algorithm should be used to pick the server.

Used in: clustering-descriptor
-->
<!ELEMENT stateless-bean-call-router-class-name (#PCDATA)>


<!--
The valid values of the stateless-bean-is-clusterable parameter 
are "True" or "False."

The parameter is applicable only to session EJBeans with a 
session-type value of "Stateless" (see ejb-jar.dtd).
If home-is-clusterable is "True" and this parameter is also "true",
calls to this bean stub will be load-balanced between all the
the servers on which this bean is deployed, and if a server
hosting the bean becomes unreachable, the call will automatically
failover to another server hosting the bean.

Used in: clustering-descriptor
-->
<!ELEMENT stateless-bean-is-clusterable (#PCDATA)>


<!--
The stateless-bean-load-algorithm specifies the algorithm to use 
for load-balancing between replicas of this bean.  If this property 
is not specified, the algorithm specified by the server property
weblogic.cluster.defaultLoadAlgorithm will be used.  

The legal values of stateless-bean-load-algorithm are:
  RoundRobin
  Random
  WeightBased

Used in: clustering-descriptor
-->
<!ELEMENT stateless-bean-load-algorithm (#PCDATA)>


<!--
The value of the stateless-bean-methods-are-idempotent must be
either "True" or "False."

This parameter is applicable only to session EJBeans with a 
session-type of "Stateless" (see ejb-jar.dtd).
The value should be set to "True" only if the bean is written
such that repeated calls to the same method with the same arguments
has exactly the same effect as a single call. This allows the failover
handler to retry a failed call without knowing whether the call
actually completed on the failed server. Setting this property to
"true" makes it possible for the bean stub to automatically recover
from any failure as long as another server hosting the bean can be
reached.

Used in: clustering-descriptor
-->
<!ELEMENT stateless-bean-methods-are-idempotent (#PCDATA)>


<!--
Sets the default timeout for container-initiated transactions for this
bean. If a transaction's duration is longer than this value, it will
be rolled back. 

Used in: transaction-descriptor
-->
<!ELEMENT trans-timeout-seconds (#PCDATA)>



<!--
The transaction-descriptor specifies properties relating to transactions

Used in: weblogic-enterprise-bean
-->
<!ELEMENT transaction-descriptor (
  trans-timeout-seconds?)
>


<!--
This stores the identifier of the Persistence Type that this tag describes.

Used in: persistence-type, persistence-use

Example:
    <type-identifier>WebLogic_CMP_JDBC</type-identifier>
-->
<!ELEMENT type-identifier (#PCDATA)>



<!--
The type-storage tag stores a file (path relative within the ejb-jar file) 
which stores data specific to this Persistence Type.

Used in: persistence-type

Example:
    <type-storage>persistence/weblogic/cmp_jdbc.xml</type-storage>
-->
<!ELEMENT type-storage (#PCDATA)>



<!--
The type-version tag stores the version of the Persistence Type to be used for 
this particular bean. Most useful when a server deployment has multiple 
compatible versions of the same Persistence Type installed, as the Persistence 
Type identifier is not unique between versions.

Used in: persistence-use, persistence-type

Example:
    <type-version>1.3.2</type-version>   

-->
<!ELEMENT type-version (#PCDATA)>


<!-- 
The weblogic-ejb-jar is the root element of the weblogic component of the
EJB deployment descriptor 
-->
<!ELEMENT weblogic-ejb-jar (description?, weblogic-version?, 
          weblogic-enterprise-bean*, security-role-assignment*)>


<!-- 
The weblogic-enterprise-bean element contains the deployment
information for a bean that is specific to the WebLogic Server

Used in: weblogic-ejb-jar
-->
<!ELEMENT weblogic-enterprise-bean (
     ejb-name, 
     caching-descriptor?, 
     persistence-descriptor?, 
     clustering-descriptor?, 
     transaction-descriptor?,
     reference-descriptor?,
     enable-call-by-reference?,
     jndi-name?)
>

<!--
The weblogic-version specifies the version of WebLogic to which 
the weblogic-ejb-jar applies.

Used in: weblogic-ejb-jar
-->
<!ELEMENT weblogic-version (#PCDATA)>

