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

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

DOCTYPE jboss-app
    PUBLIC "-//JBoss//DTD Java EE Application 5.0//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd"
-->

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


<!--
NOTE: legacy element from 4.x. Has absolutely no effect in JBoss_5.x.

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

<!-- An .ear file may contain a directory that contains libraries packaged in JAR files.
The library-directory element of the .ear files deployment descriptor contains the name
of this directory. If a library-directory element is not specified,
the directory named lib is used.

An empty library-directory element may be used to specify that there is no library directory.

All files in this directory (but not subdirectories) with a .jar extension must be made available
to all components packaged in the EAR file, including application clients.

   Used in: jboss-app
-->
<!ELEMENT library-directory (#PCDATA)>

<!-- The module element is used to specify a jboss specific module archive.
-->
<!ELEMENT module (service | har | web)>

<!-- 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 web element specifies a war

Example:
   <module>
      <web>
         <web-uri>myapp.war</web-uri>
         <context-root>/myapp</context-root>
      </web>
   </module>
-->
<!ELEMENT web (web-uri, context-root)>

<!--
The web-uri element specifies the URI of a web application file,
relative to the top level of the application package.

Used in: web
-->
<!ELEMENT web-uri (#PCDATA)>

<!-- The context-root element specifies the context root of a web
application. This is normally specified at the ear level using the standard
J2EE application.xml descriptor, but it may be given here for standalone wars.
This should not override the application.xml level specification.
Used in: web
-->
<!ELEMENT context-root (#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)>

<!-- Allow the jboss-app to have a unique id -->
<!ATTLIST jboss-app id ID #IMPLIED>
<!-- Allow the module to have a unique id -->
<!ATTLIST module id ID #IMPLIED>
<!-- Allow the security-role to have a unique id -->
<!ATTLIST security-role id ID #IMPLIED>
