CMR - Setting CMR field raises Exception.
anbuselvan Oct 26, 2003 11:35 PMI'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>