1 Reply Latest reply on Oct 27, 2003 7:46 AM by Raja

    CMR - Setting CMR field raises Exception.

    Anbu Selvan Newbie

      I'm trying to create a simple 1:1 CMR between two entities (User & UserDetail). It fails when I set the CMR field. Would someone help me with this?

      21:53:47,718 ERROR [LogInterceptor] TransactionRolledbackException in method: public abstract bean.interfaces.User bean.interfaces.UserHome.create(java.lang.Str
      ing,bean.interfaces.UserDetail) throws bean.interfaces.InvalidValueException,javax.ejb.CreateException,java.rmi.RemoteException, causedBy:
      java.lang.ClassCastException
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setInstanceValue(JDBCCMRFieldBridge.java:742)
      at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setValue(JDBCCMRFieldBridge.java:597)
      at org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityBridgeInvocationHandler.java:121)
      at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:59)
      at bean.entity.UserCMP$Proxy.setUserDetail()
      at bean.entity.UserBean.ejbPostCreate(UserBean.java:187)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.ejb.plugins.CMPPersistenceManager.postCreateEntity(CMPPersistenceManager.java:240)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.postCreateEntity(CachedConnectionInterceptor.java:277)
      at org.jboss.ejb.EntityContainer.postCreateHome(EntityContainer.java:724)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.java:1083)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInterceptor.java:71)
      at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:298)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
      at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:114)
      at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:174)
      at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:89)
      at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:43)
      at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88)
      at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
      at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98)
      at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92)
      at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120)
      at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
      at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:484)
      at org.jboss.ejb.Container.invoke(Container.java:720)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
      at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101)

      at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:90)
      at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
      at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45)
      at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:173)
      at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)
      at $Proxy357.create(Unknown Source)
      at bean.session.SessionFacade.createUser(SessionFacade.java:192)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(StatefulSessionContainer.java:928)
      at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
      at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:269)
      at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
      at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
      at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
      at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
      at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
      at org.jboss.ejb.StatefulSessionContainer.internalInvoke(StatefulSessionContainer.java:416)
      at org.jboss.ejb.Container.invoke(Container.java:700)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
      at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:362)
      at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
      at sun.rmi.transport.Transport$1.run(Transport.java:148)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
      at java.lang.Thread.run(Thread.java:534)
      21:53:47,937 ERROR [LogInterceptor] EJBException:
      javax.ejb.EJBException: Remote exception occured while removing generator session bean: null; CausedByException is:
      null; nested exception is:
      javax.ejb.EJBException: null; CausedByException is:
      null
      at bean.session.SessionFacade.createUser(SessionFacade.java:209)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(StatefulSessionContainer.java:928)
      at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
      at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
      at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:269)
      at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
      at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
      at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
      at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
      at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
      at org.jboss.ejb.StatefulSessionContainer.internalInvoke(StatefulSessionContainer.java:416)
      at org.jboss.ejb.Container.invoke(Container.java:700)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
      at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:362)
      at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
      at sun.rmi.transport.Transport$1.run(Transport.java:148)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
      at java.lang.Thread.run(Thread.java:534)


      Following is the DD I use.
      <?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 >

      <![CDATA[No Description.]]>
      <display-name>Generated by XDoclet</display-name>

      <enterprise-beans>

      <!-- Session Beans -->

      <![CDATA[Session Bean Template ATTENTION: Some of the XDoclet tags are hidden from XDoclet by adding a "--" between @ and the namespace.]]>
      <display-name>Facade for Entity bean</display-name>

      <ejb-name>SessionFacade</ejb-name>

      bean.interfaces.SessionFacadeHome
      bean.interfaces.SessionFacade
      <local-home>bean.interfaces.SessionFacadeLocalHome</local-home>
      bean.interfaces.SessionFacadeLocal
      <ejb-class>bean.session.SessionFacade</ejb-class>
      <session-type>Stateful</session-type>
      <transaction-type>Container</transaction-type>

      <ejb-ref >
      <ejb-ref-name>Address</ejb-ref-name>
      <ejb-ref-type>Entity</ejb-ref-type>
      bean.interfaces.AddressHome
      bean.interfaces.Address
      <ejb-link>Address</ejb-link>
      </ejb-ref>

      <resource-ref >
      <res-ref-name>test/Mail</res-ref-name>
      <res-type>javax.mail.Session</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>




      <![CDATA[Retrieves Key Sequence from DB (for the specified key sequence)]]>
      <display-name>Stateless Session bean to generate primary keys using the Oracle sequence.</display-name>

      <ejb-name>SequenceGenerator</ejb-name>

      bean.interfaces.SequenceGeneratorHome
      bean.interfaces.SequenceGenerator
      <local-home>bean.interfaces.SequenceGeneratorLocalHome</local-home>
      bean.interfaces.SequenceGeneratorLocal
      <ejb-class>bean.session.SequenceGeneratorBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>

      <env-entry>
      <env-entry-name>DataSource_Name</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>OracleDS</env-entry-value>
      </env-entry>



      <!--
      To add session beans that you have deployment descriptor info for, add
      a file to your XDoclet merge directory called session-beans.xml that contains
      the markup for those beans.
      -->

      <!-- Entity Beans -->

      <![CDATA[The Entity bean represents an Address]]>
      <display-name>Address Entity Bean</display-name>

      <ejb-name>Address</ejb-name>

      bean.interfaces.AddressHome
      bean.interfaces.Address
      <local-home>bean.interfaces.AddressLocalHome</local-home>
      bean.interfaces.AddressLocal

      <ejb-class>bean.entity.AddressCMP</ejb-class>
      <persistence-type>Container</persistence-type>
      <prim-key-class>bean.interfaces.AddressPK</prim-key-class>
      False
      <cmp-version>2.x</cmp-version>
      <abstract-schema-name>Address</abstract-schema-name>
      <cmp-field >
      <![CDATA[Retrieve the Address's primary key.]]>
      <field-name>addressKey</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>address1</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>city</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>postalCode</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>state</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>country</field-name>
      </cmp-field>

      <env-entry>
      <env-entry-name>SequenceKeyName</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>ADDRESS_KEY_SEQ</env-entry-value>
      </env-entry>

      <ejb-ref >
      <ejb-ref-name>ejb/SequenceGenerator</ejb-ref-name>
      <ejb-ref-type>Session</ejb-ref-type>
      bean.interfaces.SequenceGeneratorHome
      bean.interfaces.SequenceGenerator
      <ejb-link>SequenceGenerator</ejb-link>
      </ejb-ref>


      <query-method>
      <method-name>findByAddress1</method-name>
      <method-params>
      <method-param>java.lang.String</method-param>
      </method-params>
      </query-method>
      <ejb-ql><![CDATA[SELECT OBJECT(t) FROM Address t WHERE t.address1 = ?1]]></ejb-ql>

      <!-- Write a file named ejb-finders-AddressBean.xml if you want to define extra finders. -->



      <![CDATA[The Entity bean represents an Partner]]>
      <display-name>Partner Entity Bean</display-name>

      <ejb-name>Partner</ejb-name>

      bean.interfaces.PartnerHome
      bean.interfaces.Partner
      <local-home>bean.interfaces.PartnerLocalHome</local-home>
      bean.interfaces.PartnerLocal

      <ejb-class>bean.entity.PartnerCMP</ejb-class>
      <persistence-type>Container</persistence-type>
      <prim-key-class>bean.interfaces.PartnerPK</prim-key-class>
      False
      <cmp-version>2.x</cmp-version>
      <abstract-schema-name>Partner</abstract-schema-name>
      <cmp-field >
      <![CDATA[Retrieve the Partner's primary key.]]>
      <field-name>partnerKey</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>name</field-name>
      </cmp-field>

      <env-entry>
      <env-entry-name>SequenceKeyName</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>PARTNER_KEY_SEQ</env-entry-value>
      </env-entry>

      <ejb-ref >
      <ejb-ref-name>ejb/SequenceGenerator</ejb-ref-name>
      <ejb-ref-type>Session</ejb-ref-type>
      bean.interfaces.SequenceGeneratorHome
      bean.interfaces.SequenceGenerator
      <ejb-link>SequenceGenerator</ejb-link>
      </ejb-ref>


      <query-method>
      <method-name>findByName</method-name>
      <method-params>
      <method-param>java.lang.String</method-param>
      </method-params>
      </query-method>
      <ejb-ql><![CDATA[SELECT OBJECT(t) FROM Partner t WHERE t.name = ?1]]></ejb-ql>

      <!-- Write a file named ejb-finders-PartnerBean.xml if you want to define extra finders. -->



      <![CDATA[The Entity bean represents an User]]>
      <display-name>User Entity Bean</display-name>

      <ejb-name>User</ejb-name>

      bean.interfaces.UserHome
      bean.interfaces.User
      <local-home>bean.interfaces.UserLocalHome</local-home>
      bean.interfaces.UserLocal

      <ejb-class>bean.entity.UserCMP</ejb-class>
      <persistence-type>Container</persistence-type>
      <prim-key-class>bean.interfaces.UserPK</prim-key-class>
      False
      <cmp-version>2.x</cmp-version>
      <abstract-schema-name>User</abstract-schema-name>
      <cmp-field >
      <![CDATA[]]>
      <field-name>userKey</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>loginName</field-name>
      </cmp-field>

      <env-entry>
      <env-entry-name>SequenceKeyName</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>USER_KEY_SEQ</env-entry-value>
      </env-entry>

      <ejb-ref >
      <ejb-ref-name>ejb/SequenceGenerator</ejb-ref-name>
      <ejb-ref-type>Session</ejb-ref-type>
      bean.interfaces.SequenceGeneratorHome
      bean.interfaces.SequenceGenerator
      <ejb-link>SequenceGenerator</ejb-link>
      </ejb-ref>

      <!-- Write a file named ejb-finders-UserBean.xml if you want to define extra finders. -->



      <![CDATA[The Entity bean represents an UserDetail]]>
      <display-name>UserDetail Entity Bean</display-name>

      <ejb-name>UserDetail</ejb-name>

      bean.interfaces.UserDetailHome
      bean.interfaces.UserDetail
      <local-home>bean.interfaces.UserDetailLocalHome</local-home>
      bean.interfaces.UserDetailLocal

      <ejb-class>bean.entity.UserDetailCMP</ejb-class>
      <persistence-type>Container</persistence-type>
      <prim-key-class>bean.interfaces.UserDetailPK</prim-key-class>
      False
      <cmp-version>2.x</cmp-version>
      <abstract-schema-name>UserDetail</abstract-schema-name>
      <cmp-field >
      <![CDATA[]]>
      <field-name>userDetailKey</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>firstName</field-name>
      </cmp-field>
      <cmp-field >
      <![CDATA[]]>
      <field-name>lastName</field-name>
      </cmp-field>

      <env-entry>
      <env-entry-name>SequenceKeyName</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>USER_DETAIL_KEY_SEQ</env-entry-value>
      </env-entry>

      <ejb-ref >
      <ejb-ref-name>ejb/SequenceGenerator</ejb-ref-name>
      <ejb-ref-type>Session</ejb-ref-type>
      bean.interfaces.SequenceGeneratorHome
      bean.interfaces.SequenceGenerator
      <ejb-link>SequenceGenerator</ejb-link>
      </ejb-ref>

      <!-- Write a file named ejb-finders-UserDetailBean.xml if you want to define extra finders. -->


      <!--
      To add entity beans that you have deployment descriptor info for, add
      a file to your XDoclet merge directory called entity-beans.xml that contains
      the markup for those beans.
      -->

      <!-- Message Driven Beans -->
      <!--
      To add message driven beans that you have deployment descriptor info for, add
      a file to your XDoclet merge directory called message-driven-beans.xml that contains
      the <message-driven></message-driven> markup for those beans.
      -->

      </enterprise-beans>

      <!-- Relationships -->

      <ejb-relation >
      <ejb-relation-name>partner-address</ejb-relation-name>

      <ejb-relationship-role >
      <ejb-relationship-role-name>partner-has-address</ejb-relationship-role-name>
      One
      <relationship-role-source >
      <ejb-name>Partner</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>workAddress</cmr-field-name>
      </cmr-field>
      </ejb-relationship-role>

      <ejb-relationship-role >
      <ejb-relationship-role-name>address-has-partner</ejb-relationship-role-name>
      One
      <relationship-role-source >
      <ejb-name>Address</ejb-name>
      </relationship-role-source>
      </ejb-relationship-role>

      </ejb-relation>
      <ejb-relation >
      <ejb-relation-name>user-detail</ejb-relation-name>

      <ejb-relationship-role >
      <ejb-relationship-role-name>user-has-userdetail</ejb-relationship-role-name>
      One
      <relationship-role-source >
      <ejb-name>User</ejb-name>
      </relationship-role-source>
      <cmr-field >
      <cmr-field-name>userDetail</cmr-field-name>
      </cmr-field>
      </ejb-relationship-role>

      <ejb-relationship-role >
      <ejb-relationship-role-name>userdetail-has-user</ejb-relationship-role-name>
      One
      <relationship-role-source >
      <ejb-name>UserDetail</ejb-name>
      </relationship-role-source>
      </ejb-relationship-role>

      </ejb-relation>


      <!-- Assembly Descriptor -->
      <assembly-descriptor >
      <!--
      To add additional assembly descriptor info here, add a file to your
      XDoclet merge directory called assembly-descriptor.xml that contains
      the <assembly-descriptor></assembly-descriptor> markup.
      -->

      <!-- finder permissions -->

      <!-- finder permissions -->

      <!-- finder permissions -->

      <!-- finder permissions -->

      <!-- finder permissions -->

      <!-- finder permissions -->

      <!-- transactions -->
      <container-transaction >

      <ejb-name>Address</ejb-name>
      <method-name>*</method-name>

      <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction >

      <ejb-name>Partner</ejb-name>
      <method-name>*</method-name>

      <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction >

      <ejb-name>SessionFacade</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>createUser</method-name>
      <method-params>
      </method-params>

      <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction >

      <ejb-name>User</ejb-name>
      <method-name>*</method-name>

      <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction >

      <ejb-name>UserDetail</ejb-name>
      <method-name>*</method-name>

      <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction >

      <ejb-name>SequenceGenerator</ejb-name>
      <method-intf>Remote</method-intf>
      <method-name>getNextNumber</method-name>
      <method-params>
      <method-param>java.lang.String</method-param>
      </method-params>

      <trans-attribute>Mandatory</trans-attribute>
      </container-transaction>

      <!-- finder transactions -->
      </assembly-descriptor>

      </ejb-jar>