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

<!-- The JBoss 4.x specific elements for ears.
$Id: jboss-app_4_0.dtd 60563 2007-02-15 11:11:32Z dimitris@jboss.org $

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)>

