how ejb-jar.xml look like is described here. According to version of the EJB need to have use dtd path. EJB 1 http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd EJB 2.0 "http://java.sun.com/dtd/ejb-jar_2_0.dtd" EJB 3.0 need xsd as updated Configuraions http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
Access the full DTD at http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd which is very nicely written. All of the tags (elements) are fully described in alphabetical order. Example usage is provided. A minimal ejb-jar.xml file looks like this:
<!-- A minimal session EJB deployment -->
<session>
<ejb-name>PostingEJB</ejb-name>
<home>ejbs.PostingHome</home>
<remote>ejbs.Posting</remote>
<ejb-class>ejbs.PostingBean</ejb-class>
<!-- or Stateless -->
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
</session>
<!-- A minimal CMP entity EJB deployment -->
<entity>
<ejb-name>Bid</ejb-name>
<home>ejbe.BidHome</home>
<remote>ejbe.Bid</remote>
<ejb-class>ejbe.BidBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>ejbe.BidPK</prim-key-class>
<reentrant>False</reentrant>
<cmp-field><field-name>bid</field-name></cmp-field>
<cmp-field><field-name>bidder</field-name></cmp-field>
<cmp-field><field-name>bidDate</field-name></cmp-field>
<cmp-field><field-name>id</field-name></cmp-field>
</entity>
<!-- A minimal BMP entity EJB deployment -->
<entity>
<ejb-name>BidBMP</ejb-name>
<home>com.bea.EJBE.solutions.BidBMPHome</home>
<remote>com.bea.EJBE.solutions.BidBMP</remote>
<ejb-class>com.bea.EJBE.solutions.BidBMPBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>pkg.BidBMPPK</prim-key-class>
<reentrant>False</reentrant>
</entity>
Sample for EJB 2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<display-name>EJBModule_Ejemplo</display-name>
<enterprise-beans>
<entity>
<ejb-name>Track</ejb-name>
<local-home>is346.TrackHome</local-home>
<local>is346.Track</local>
<ejb-class>is346.TrackBean</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>Track</abstract-schema-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>title</field-name>
</cmp-field>
<cmp-field>
<field-name>duration</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
</entity>
<entity>
<ejb-name>Artist</ejb-name>
<local-home>is346.ArtistHome</local-home>
<local>is346.Artist</local>
<ejb-class>is346.ArtistBean</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>Artist</abstract-schema-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
</entity>
<session>
<ejb-name>TrackSessionFacade</ejb-name>
<home>is346.TrackSessionFacadeHome</home>
<remote>is346.TrackSessionFacade</remote>
<ejb-class>is346.TrackSessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<ejb-ref-name>ejb/track</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>is346.TrackHome</local-home>
<local>is346.Track</local>
<ejb-link>Track</ejb-link>
</ejb-local-ref>
</session>
<session>
<ejb-name>ArtistSessionFacade</ejb-name>
<home>is346.ArtistSessionFacadeHome</home>
<remote>is346.ArtistSessionFacade</remote>
<ejb-class>is346.ArtistSessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<ejb-ref-name>ejb/artist</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>is346.ArtistHome</local-home>
<local>is346.Artist</local>
<ejb-link>Artist</ejb-link>
</ejb-local-ref>
</session>
</enterprise-beans>
<relationships>
<ejb-relation>
<ejb-relation-name>track-artist</ejb-relation-name>
<ejb-relationship-role>
<description>track</description>
<ejb-relationship-role-name>TrackRelationshipRole</ejb-relationship-role-name>
<multiplicity>Many</multiplicity>
<relationship-role-source>
<description>track</description>
<ejb-name>Track</ejb-name>
</relationship-role-source>
<cmr-field>
<description>artist</description>
<cmr-field-name>artist</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<description>artist</description>
<ejb-relationship-role-name>ArtistRelationshipRole</ejb-relationship-role-name>
<multiplicity>Many</multiplicity>
<relationship-role-source>
<description>artist</description>
<ejb-name>Artist</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation>
</relationships>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>Track</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>Artist</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>TrackSessionFacade</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>ArtistSessionFacade</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
Sample for EJB 3.0
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
<session>
<ejb-name>TestBean</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/fooremote</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<remote>test.FooRemoteIF</remote>
</ejb-ref>
<env-entry>
<description>admin email</description>
<env-entry-name>adminEmail</env-entry-name>
<env-entry-value>admin@example.x</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
<interceptors>
<interceptor>
<interceptor-class>test.Interceptor1</interceptor-class>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>test.Interceptor1</interceptor-class>
</interceptor-binding>
</assembly-descriptor>
</ejb-jar>
Also Some Client implementation are providing own configuration for the same. e.g. Weblogic need to have weblogic-ejb-jar.xml Deployment Descriptor Reference. For more help for web logic can see : http://docs.oracle.com/cd/E13222_01/wls/docs81/ejb/DDreference-ejb-jar.html