<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd'> 

<ejb-jar>
   <enterprise-beans>
      <session>
	 <ejb-name>Teller</ejb-name>
	 <home>ejava.transactions.demo.TellerRemoteHome</home>
	 <remote>ejava.transactions.demo.TellerRemote</remote>
	 <ejb-class>ejava.transactions.demo.TellerEJB</ejb-class>
	 <session-type>Stateless</session-type>
	 <transaction-type>Container</transaction-type>
	 <resource-ref>
	    <res-ref-name>jms/myConnectionFactory</res-ref-name>
	    <res-type>javax.jms.TopicConnectionFactory</res-type>
	    <res-auth>Container</res-auth>
	 </resource-ref>
	 <resource-ref>
	    <res-ref-name>jms/myTopic</res-ref-name>
	    <res-type>javax.jms.Topic</res-type>
	    <res-auth>Container</res-auth>
	 </resource-ref>
      </session>
      <session>
	 <ejb-name>SessionSynchronizedTeller</ejb-name>
	 <home>ejava.transactions.demo.TellerRemoteHome</home>
	 <remote>ejava.transactions.demo.TellerRemote</remote>
	 <ejb-class>ejava.transactions.demo.SessionSynchronizedTellerEJB
	 </ejb-class>
	 <session-type>Stateful</session-type>
	 <transaction-type>Container</transaction-type>
      </session>
      <entity>
	 <ejb-name>Account</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
      <entity>
	 <ejb-name>Account_NotSupported</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account_NotSupported</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
      <entity>
	 <ejb-name>Account_Supports</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account_Supports</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
      <entity>
	 <ejb-name>Account_Required</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account_Required</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
      <entity>
	 <ejb-name>Account_RequiresNew</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account_RequiresNew</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
      <entity>
	 <ejb-name>Account_Mandatory</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account_Mandatory</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
      <entity>
	 <ejb-name>Account_Never</ejb-name>
	 <home>ejava.transactions.demo.AccountRemoteHome</home>
	 <remote>ejava.transactions.demo.AccountRemote</remote>
	 <ejb-class>ejava.transactions.demo.AccountEJB</ejb-class>
	 <persistence-type>Container</persistence-type>
	 <prim-key-class>java.lang.String</prim-key-class>
	 <reentrant>False</reentrant>
	 <abstract-schema-name>Account_Never</abstract-schema-name>
	 <cmp-field> <field-name>id</field-name> </cmp-field>
	 <cmp-field> <field-name>balance</field-name> </cmp-field>
         <primkey-field>id</primkey-field>
      </entity>
   </enterprise-beans>
   
   <assembly-descriptor>
      <container-transaction>
	 <method>
	    <ejb-name>Teller</ejb-name>
	    <method-name>*</method-name>
	 </method>
	 <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>SessionSynchronizedTeller</ejb-name>
	    <method-name>*</method-name>
	 </method>
	 <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>Account_NotSupported</ejb-name>
	    <method-name>*</method-name>
	 </method>
	 <trans-attribute>NotSupported</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>Account_Supports</ejb-name>
	    <method-name>*</method-name>
	 </method>
	 <trans-attribute>Supports</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>Account_Required</ejb-name>
	    <method-name>*</method-name>
	 </method>
	 <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>Account_RequiresNew</ejb-name>
	    <method-name>*</method-name>
	 </method>
	 <trans-attribute>RequiresNew</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>Account_Mandatory</ejb-name>
	    <method-name>deposit</method-name>
	 </method>
	 <trans-attribute>Mandatory</trans-attribute>
      </container-transaction>
      <container-transaction>
	 <method>
	    <ejb-name>Account_Never</ejb-name>
	    <method-name>deposit</method-name>
	 </method>
	 <trans-attribute>Never</trans-attribute>
      </container-transaction>
   </assembly-descriptor>
</ejb-jar>
