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

Reply via email to