The deployment descriptor is part of the contract between the ejb-jar file producer and consumer.
The entity element declares an entity bean. The declaration consists of:
an optional description
an optional display-name
an optional small icon file name
an optional large icon file name
a unique name assigned to the enterprise bean in the deployment descriptor
the names of the entity bean’s home and remote interfaces, if any
the names of the entity bean’s local home and local interfaces, if any
the entity bean’s implementation class
the entity bean’s persistence management type
the entity bean’s primary key class name
an indication of the entity bean’s reentrancy
an optional specification of the entity bean’s cmp-version (2.x default)
an optional specification of the entity bean’s abstract schema name (CMP only)
an optional list of container-managed fields (CMP only)
an optional specification of the primary key field (CMP only)
an optional declaration of the bean’s environment entries
an optional declaration of the bean’s EJB references
an optional declaration of the bean’s local EJB references
an optional declaration of the security role references
an optional declaration of the security identity to be used for the execution of the bean’s methods
an optional declaration of the bean’s resource manager connection factory references
an optional declaration of the bean’s resource environment references
The optional abstract-schema-name element must be specified for an entity bean with container-managed persistence and cmp-version 2.x.
The optional primkey-field may be present in the descriptor if the entity’s persistence-type is Container.
The optional cmp-version element may be present in the descriptor if the entity’s persistence-type is Container. If the persistence-type is Container and the cmp-version element is not specified, its value DEFAULTS to 2.x.
The optional home and remote elements must be specified if the entity bean has a remote home and remote interface.
The optional local-home and local elements must be specified if the entity bean has a local home and local interface.
The optional query elements must be present if the persistence-type is Container and the cmp-version is 2.x and query methods other than findByPrimaryKey have been defined for the entity bean.
<!ELEMENT entity (description?, display-name?, small-icon?, large-icon?, ejb-name, home?, remote?, local-home?, local?, ejb-class, persistence-type, prim-key-class, reentrant, cmp-version?, abstract-schema-name?, cmp-field*, primkey-field?, env-entry*, ejb-ref*, ejb-local-ref*, security-role-ref*, security-identity?, resource-ref*, resource-env-ref*, query*)>Mandatory elements are:
ejb-name 0
ejb-class
persistence-type
prim-key-class 1
reentrant
Example of Entity Bean deployment descriptor (with relationship):
<ejb-jar> <enterprise-beans> ... <entity> <ejb-name>ReservationEJB</ejb-name> <local-home>com.titan.reservation.ReservationHomeLocal</local-home> <local>com.titan.reservation.ReservationLocal</local> <ejb-class>com.titan.reservation.ReservationBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Integer</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>Reservation</abstract-schema-name> <cmp-field><field-name>id</field-name></cmp-field> <cmp-field><field-name>amountPaid</field-name></cmp-field> <cmp-field><field-name>date</field-name></cmp-field> <primkey-field>id</primkey-field> <security-identity><use-caller-identity/></security-identity> <query> <query-method> <method-name>findWithPaymentGreaterThan</method-name> <method-params> <method-param>java.lang.Double</method-param> </method-params> </query-method> <ejb-ql> SELECT OBJECT( r ) FROM Reservation r WHERE r.amountPaid > ?1 </ejb-ql> </query> </entity> <entity> <ejb-name>CabinEJB</ejb-name> <local-home>com.titan.cabin.CabinHomeLocal</local-home> <local>com.titan.cabin.CabinLocal</local> <ejb-class>com.titan.cabin.CabinBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Integer</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>Cabin</abstract-schema-name> <cmp-field><field-name>id</field-name></cmp-field> <cmp-field><field-name>name</field-name></cmp-field> <cmp-field><field-name>deckLevel</field-name></cmp-field> <cmp-field><field-name>bedCount</field-name></cmp-field> <primkey-field>id</primkey-field> <security-identity><use-caller-identity/></security-identity> </entity> ... </enterprise-beans> <relationships> <ejb-relation> <ejb-relation-name>Cabin-Reservation</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name> Cabin-has-many-Reservations </ejb-relationship-role-name> <multiplicity>Many</multiplicity> <relationship-role-source> <ejb-name>CabinEJB</ejb-name> </relationship-role-source> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name> Reservation-has-many-Cabins </ejb-relationship-role-name> <multiplicity>Many</multiplicity> <relationship-role-source> <ejb-name>ReservationEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>cabins</cmr-field-name> <cmr-field-type>java.util.Set</cmr-field-type> </cmr-field> </ejb-relationship-role> </ejb-relation> </relationships> ... </ejb-jar>