<?xml version='1.0' encoding='UTF-8' ?>

<!-- The JBoss 4.x specific elements for ears.
$Id$

DOCTYPE jboss-app
    PUBLIC "-//JBoss//DTD J2EE Application 1.4//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd"
-->

<!-- The jboss-app element is the root element.
-->
<!ELEMENT jboss-app (module-order?,security-domain?, unauthenticated-principal?,
 loader-repository?, jmx-name?, module*, security-role*)>

<!--
 The value of the module-order could be implicit or strict
 <module-order>strict</module-order>
 	or 
 <module-order>implicit</module-order>
 The strict value indicates that the deployments of the modules will 
 be done in the order that would be specified in the application.xml 
 and jboss-app.xml file . 
 The implicit value indicates the deployment would follow the order 
 which would be specified in the DeploymentSorter.
 The default order will be implicit to support backward compatibility
--> 
<!ELEMENT module-order (#PCDATA)>

<!--
  The security-domain element specifies the JNDI name of the security
  manager that implements the EJBSecurityManager and RealmMapping for
  the domain. When specified at the jboss level it specifies the security
  domain for all j2ee components in the deployment unit.
  One can override the global security-domain at the container
  level using the security-domain element at the container-configuration
  level.

  Used in: jboss-app
-->
<!ELEMENT security-domain (#PCDATA)>

<!--
  The unauthenticated-principal element specifies the name of the principal
  that will be returned by the EJBContext.getCallerPrincipal() method if there
  is no authenticated user. This Principal has no roles or privaledges to call
  any other beans.
-->
<!ELEMENT unauthenticated-principal (#PCDATA)>

<!-- The loader-repository specifies the name of the UnifiedLoaderRepository
   MBean to use for the ear to provide ear level scoping of classes deployed
   in the ear. It is a unique JMX ObjectName string. It may also specify
   an arbitrary configuration by including a loader-repository-config element.

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

   <loader-repository loaderRepositoryClass='dot.com.LoaderRepository'>
      dot.com:loader=unique-archive-name
      <loader-repository-config configParserClass='dot.com.LoaderParser'>
         java2ParentDelegaton=true
      </loader-repository-config>
   </loader-repository>
-->
<!ELEMENT loader-repository (#PCDATA | loader-repository-config)*>
<!-- The loaderRepositoryClass attribute gives the classname of the
org.jboss.mx.loading.LoaderRepository implementation.
-->
<!ATTLIST loader-repository loaderRepositoryClass CDATA #IMPLIED>

<!-- The loader-repository-config element specifies any arbitrary configuration
fragment for use in configuring the loader-repository instance. The actual
content of this element is specific to the loaderRepositoryClass and the
code parsing the element.
-->
<!ELEMENT loader-repository-config (#PCDATA)>
<!-- The configParserClass attribute gives the classname of the
org.jboss.mx.loading.LoaderRepositoryFactory.LoaderRepositoryConfigParser
implementation to use to parse the loader-repository-config content.
-->
<!ATTLIST loader-repository-config configParserClass CDATA #IMPLIED>

<!-- The jmx-name element allows one to specify the JMX ObjectName to use
for the MBean associated with the ejb-jar module. This must be a unique
name and valid JMX ObjectName string.

   Used in: jboss-app
-->
<!ELEMENT jmx-name (#PCDATA)>

<!-- The module element is used to specify a jboss specific module archive.
-->
<!ELEMENT module (service | har)>
<!-- Allow the module to have a unique id -->
<!ATTLIST module id ID #IMPLIED>

<!-- The service element specifies a service archive (SAR) to deploy.

Example:
   <module>
      <service>external.sar</service>
   </module>
-->
<!ELEMENT service (#PCDATA)>

<!-- The har element specifies a Hibernate archive (HAR) to deploy.

Example:
   <module>
      <har>myapp.har</har>
   </module>
-->
<!ELEMENT har (#PCDATA)>

<!--
  The security-role element contains the definition of a security role.
  The definition consists of an the security role name and principal name element(s).

Used in: jboss-app

Example:
		<security-role>
      <role-name>Manager</role-name>
      <principal-name>j2ee</principal-name>
      <principal-name>javajoe</principal-name>
		</security-role>
-->
<!ELEMENT security-role (role-name, principal-name+)>

<!--
  The role-name element is the name of the role.

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

<!--
  The principal-name element is the name of the principal that is mapped
  to the assembly role-name.

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

