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

<!-- The JBoss 4.2.x specific elements for ears.
$Id: jboss-app_4_0.dtd 56293 2006-08-26 12:42:15Z vicky.kak@jboss.com $

DOCTYPE jboss-app
    PUBLIC "-//JBoss//DTD J2EE Application 4.2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.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*)>

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

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

