This is a wild guess, but I wonder if there is some problem with the SUID changing during enhancement (I know this isn't supposed to happen, but...). Do you get different results if you supply the SUID in code?

thanks
david jencks

On Sep 18, 2007, at 4:55 AM, Janko Heilgeist wrote:

Hi,

I am trying to deploy an EAR which contains entity beans derived from a
generic base interface. Basically the structure looks like this:

public interface GenericEntity<PK extends Serializable> {
        PK getEntityId();
        void setEntityId(PK entityId);
}

public interface Dummy extends GenericEntity<Long> {
}

public class DummyImpl implements Dummy, Serializable {
        private Long entityId;
        @Override Long getEntityId() {
                return entityId;
        }
        @Override void setEntityId(Long entityId) {
                this.entityId = entityId;
        }
}

A minimal sample with Maven2 is at
http://dalighe.de/geronimo/generic-entity.tar.gz

The DummyImpl-entity is accessed via a DAO (stateless session bean).
While everything deploys just fine into Geronimo, I get an exception
when I try to access the DAO with a stand-alone client. The exception
thrown is:

07:13:50,483 FATAL [remote] Error caught during request processing
java.lang.VerifyError: (class: mypackage/DummyImpl, method: getEntityId
signature: ()Ljava/lang/Long;) Wrong return type in function
        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
        at java.lang.Class.getDeclaredField(Class.java:1880)
        at
java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1610)
at java.io.ObjectStreamClass.access$700 (ObjectStreamClass.java:52)
        at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
        at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java: 413) at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java: 310)
        at
java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
        at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java: 1583)
        at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
        at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 1732)
        at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject (ObjectInputStream.java:351)
        at
org.apache.openejb.client.EJBRequest$Body.readMethodParameters (EJBRequest.java:385)
        at
org.apache.openejb.client.EJBRequest$Body.readExternal (EJBRequest.java:199)
        at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest (EjbRequestHandler.java:91)
        at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest (EjbDaemon.java:163)
        at
org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:121)
        at
org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:83)
        at
org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:60)
        at
org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:75)
        at
org.apache.openejb.server.ServiceAccessController.service (ServiceAccessController.java:55)
        at
org.apache.openejb.server.ServiceDaemon$1.run(ServiceDaemon.java:117)
        at java.lang.Thread.run(Thread.java:619)

During a previous test-run I had the member variable of DummyImpl
defined as the primitive "long" and relied on auto-boxing. In that
test-run the call to the session bean's create-method was executed but
an identical exception was thrown somewhere deep in the bowels of
OpenJPA during the parsing of the entity's meta-data.

Can someone help me out with this problem?

Thanks a lot in advance!

Regards, Janko


Reply via email to