Java - Deployment descriptors (Metadata)


Deployment descriptors are XML documents included in the JARs that describes:

  • component's configuration,
  • deployment settings of an application, a module, or a component
  • of and instructions to the J2EE container.

An enterprise bean module deployment descriptor, for example, declares transaction attributes and security authorizations for an enterprise bean.

Because deployment descriptor information is declarative, it can be changed without modifying the source code. At run time, the J2EE server reads the deployment descriptor and acts upon the component accordingly.

Most J2EE vendors (Application server) provide a GUI tool for generating deployment descriptors and performing deployment because creating manual entries is tedious and error prone.


The two types of deployment descriptors are:

  • Java EE
  • and runtime.


A Java EE deployment descriptor is defined by a Java EE specification and can be used to configure deployment settings on any Java EE-compliant implementation.


A runtime deployment descriptor is used to configure Java EE implementation-specific parameters.

For example, the GlassFish Server runtime deployment descriptor contains such information as the context root of a web application, as well as GlassFish Server implementation-specific parameters, such as caching directives. The GlassFish Server runtime deployment descriptors are named sun-moduleType.xml and are located in the same META-INF directory as the Java EE deployment descriptor.

Deployment descriptor for


The following summarizes the new functionality and simplifications made in EJB 3.0 to the earlier EJB APIs:

  • You are no longer required to create the EJB deployment descriptor files (such as ejb-jar.xml).
  • You can now use metadata annotations in the bean file itself to configure metadata.
  • You are still allowed, however, to use XML deployment descriptors if you want;
  • In the case of conflicts, the deployment descriptor value overrides the annotation value.
  • The only required metadata annotation in your bean file is the one that specifies the type of EJB you are writing (@javax.ejb.Stateless, @javax.ejb.Stateful, @javax.ejb.MessageDriven, or @javax.persistence.Entity).
  • The default value for all other annotations reflect typical and standard use of EJBs.

This reduces the amount of code in your bean file in the case where you are programming a typical EJB; you only need to use additional annotations if the default values do not suit your needs.

The deployment descriptor resides in the META-INF directory inside the EJB JAR file. A JAR can contain multiple beans.


The standard Java EE deployment descriptor. The ejb-jar.xml may be used to define EJBs and to specify standard configuration settings for the EJBs. An ejb-jar.xml can specify multiple beans that will be deployed together.


WebLogic Server-specific deployment descriptor that contains elements related to WebLogic Server features such as clustering, caching, and transactions. This file is required if your beans take advantage of WebLogic Server-specific features. Like ejb-jar.xml, weblogic-ejb-jar.xml can specify multiple beans that will be deployed together.


WebLogic Server-specific deployment descriptor that contains elements related to container-managed persistence for entity beans.


In J2EE, a WAR file is typically contained within an EAR file. In the example in the preceding section, the EAR file, J2EEAppName.ear, would have its /META-INF directory at the top level, along with Web module WAR files, EJB module JAR files, client application JAR files, and resource adapter RAR files (zero or more of each, as applicable):

   orion-application.xml (optional)

The following examples show the structure of the archive files for a simple Web application. The EAR file contains a WAR file, which contains a single servlet.

Powered by ComboStrap