I briefly looked at this, well I looked at the odd ClassCastException and found that a Throwable was being casted into an Exception at the end of the else block to deal with the InvocationTargetException. I have seen this in many other places inside of JBoss and I am curious why people think that a Throwable can be *safely* casted into an Exception. In either case here, the transaction would have been rolled back, but it seems a little silly that the server is incorrectly handling exceptions in this fashion. --jason ---------- Forwarded message ---------- Date: Fri, 22 Jun 2001 17:04:48 -0700 From: Vincent Faidherbe <[EMAIL PROTECTED]> Reply-To: [EMAIL PROTECTED] To: JBoss user <[EMAIL PROTECTED]> Subject: [JBoss-user] ejb-ref Issue / java.lang.ClassCastException: java.lang.NoClassDefFoundError Hello, Here's my problem : I've an entity bean called WeblogSitem and another entity bean called WeblogStory. They belong to the same application unit. The entity bean WeblogStory needs to use the entity bean WeblogSitem but when it tries to get the Home of the WelogStory, it fails. I've the following exception on the application server : [WeblogStory] TRANSACTION ROLLBACK EXCEPTION:null; nested exception is: javax.ejb.EJBException [WeblogStory] java.lang.ClassCastException: java.lang.NoClassDefFoundError [WeblogStory] at org.jboss.ejb.plugins.BMPPersistenceManager.createEntity(BMPPersistenceManager.java:151) [WeblogStory] at org.jboss.ejb.EntityContainer.createHome(EntityContainer.java:441) [WeblogStory] at java.lang.reflect.Method.invoke(Native Method) [WeblogStory] at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:639) [WeblogStory] at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:160) [WeblogStory] at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:87) [WeblogStory] at org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:135) [WeblogStory] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:263) [WeblogStory] at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:86) [WeblogStory] at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:164) [WeblogStory] at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:106) [WeblogStory] at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:316) [WeblogStory] at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:369) [WeblogStory] at java.lang.reflect.Method.invoke(Native Method) [WeblogStory] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:237) [WeblogStory] at sun.rmi.server.UnicastServerRef2.dispatch(UnicastServerRef2.java:89) [WeblogStory] at sun.rmi.transport.Transport$1.run(Transport.java:140) [WeblogStory] at java.security.AccessController.doPrivileged(Native Method) [WeblogStory] at sun.rmi.transport.Transport.serviceCall(Transport.java:137) [WeblogStory] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:422) [WeblogStory] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:634) [WeblogStory] at java.lang.Thread.run(Thread.java:479) <?xml version="1.0" encoding="UTF-8"?> Here's the deployment descriptor : <ejb-jar> <enterprise-beans> <entity> <ejb-name>WeblogSitem</ejb-name> <home>com.icogs.sitems.weblog.ejbs.WeblogHome</home> <remote>com.icogs.sitems.weblog.ejbs.Weblog</remote> <ejb-class>com.icogs.sitems.weblog.ejbs.WeblogImpl</ejb-class> <persistence-type>Bean</persistence-type> <prim-key-class>com.icogs.sitems.weblog.ejbs.WeblogPK</prim-key-class> <reentrant>True</reentrant> </entity> <entity> <ejb-name>WeblogStory</ejb-name> <home>com.icogs.sitems.weblog.ejbs.StoryHome</home> <remote>com.icogs.sitems.weblog.ejbs.Story</remote> <ejb-class>com.icogs.sitems.weblog.ejbs.StoryImpl</ejb-class> <persistence-type>Bean</persistence-type> <prim-key-class>com.icogs.sitems.weblog.ejbs.StoryPK</prim-key-class> <reentrant>True</reentrant> <ejb-ref> <ejb-ref-name>ejb/Weblog</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <home>com.icogs.sitems.weblog.ejbs.WeblogHome</home> <remote>com.icogs.sitems.weblog.ejbs.Weblog</remote> <ejb-link>WeblogSitem</ejb-link> </ejb-ref> </entity> </enterprise-beans> </ejb-jar> Here's the piece of code which is involved in the action : InitialContext ictx = new InitialContext(); WeblogHome home = (WeblogHome) javax.rmi.PortableRemoteObject.narrow(ictx.lookup("java:comp/env/ejb/Weblog"), WeblogHome.class); WeblogHome home = (WeblogHome) GenericJNDILookup.lookupInternalHomeRef("java:comp/env/ejb/Weblog", WeblogHome.class); Weblog weblog = home.findByPrimaryKey(new WeblogPK(parentSitemId)); _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-user _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development