[jboss-user] [JBoss AOP] - VerifyError when using JBoss Cache & AOP

ZeroTolerance do-not-reply at jboss.com
Tue Aug 4 07:30:51 EDT 2009


Hi,

We use an entity bean that contains a attribute of type java.util.Set. 
This bean has the following methods for this attribute:

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
	public Set getChilds() {
		return childs;
	}

	public void setChilds(Set childs) {
		this.childs = childs;
	}

This bean has to be stored in a database and we use hibernate for it.
This bean also has to be stored ina POJO cache. Don't ask why we just need it ;-)
For that to work we have the @Replicable annotation at the class definition along side the @Entity annotation.

We compile this bean using the aopc via an ant build script.

If we now deploy the application containing this bean in JBoss 5.1  we get the following stack trace:

16:14:07,765 WARN  [ClassLoaderManager] Unexpected error during load of:org.hibernate.collection.AOPClassProxy$1
java.lang.VerifyError: class org.hibernate.collection.AOPClassProxy$1 overrides final method getKey.()Ljava/io/Serializable;
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
	at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:63)
	at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:572)
	at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:532)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:530)
	at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:507)
	at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:134)
	at org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
	at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:452)
	at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:251)
	at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:150)
	at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:265)
	at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1119)
	at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:798)
	at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:441)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at org.jboss.aop.asintegration.jboss5.ToClassInvoker.toClass(ToClassInvoker.java:88)
	at org.jboss.aop.classpool.jbosscl.JBossClDelegatingClassPool.toClass(JBossClDelegatingClassPool.java:81)
	at javassist.CtClass.toClass(CtClass.java:1094)
	at org.jboss.aop.instrument.TransformerCommon$ToClassAction$2.toClass(TransformerCommon.java:331)
	at org.jboss.aop.instrument.TransformerCommon.toClass(TransformerCommon.java:126)
	at org.jboss.aop.proxy.ClassProxyFactory.generateProxy(ClassProxyFactory.java:354)
	at org.jboss.aop.proxy.ClassProxyFactory.getProxyClass(ClassProxyFactory.java:112)
	at org.jboss.aop.proxy.ClassProxyFactory.newInstance(ClassProxyFactory.java:130)
	at org.jboss.aop.proxy.ClassProxyFactory.newInstance(ClassProxyFactory.java:124)
	at org.jboss.aop.proxy.ClassProxyFactory.newInstance(ClassProxyFactory.java:75)
	at org.jboss.aop.proxy.ClassProxyFactory.newInstance(ClassProxyFactory.java:70)
	at org.jboss.cache.pojo.collection.CollectionInterceptorUtil.getMethodMap(CollectionInterceptorUtil.java:86)
	at org.jboss.cache.pojo.interceptors.dynamic.CachedSetInterceptor.(CachedSetInterceptor.java:42)

.
.
.
.

There is one discussion on the internet (hibernate forum) that states that you can compile the org.hibernate.collection.AbstractPersistentCollection class so the methods are no longer final and then the problem is over.

I can not imagine that this would be the way to go. There probably is a very solid reason why these methods are final.

So what to do next?

Who can help us solve this annoying and for us blocking problem.

Kind regards,
Werner van Mook



View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4247826#4247826

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4247826



More information about the jboss-user mailing list