Issue on JONAS 5.1.5 + ehcache : @Cacheable => java.lang.AbstractMethodError / net.sf.cglib.core

146 views
Skip to first unread message

sdvsbm

unread,
Aug 4, 2012, 8:24:26 AM8/4/12
to ehcache-sprin...@googlegroups.com
Hi,

I'm integrating EhCache cache managment with spring 3 and Ehcache inside my web project. My project is runing on JONAS 5.1.5 (encapsulating tomcat 6) in the production environment. 
On my dev platform (with tomcat 6) everything goes well. But when I deploy on JONAS, I have this excpetion :


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'epgServiceUtil' defined in class path resource [services-servlet.xml]: Initialization of bean failed; nested exception is java.lang.AbstractMethodError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.ow2.jonas.web.tomcat6.JOnASStandardContext.start(JOnASStandardContext.java:281)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.ow2.jonas.web.tomcat6.Tomcat6Service.__doRegisterWar(Tomcat6Service.java:699)
at org.ow2.jonas.web.tomcat6.Tomcat6Service.doRegisterWar(Tomcat6Service.java)
at org.ow2.jonas.web.base.BaseWebContainerService.registerWar(BaseWebContainerService.java:914)
at org.ow2.jonas.web.base.BaseWebContainerService.registerWar(BaseWebContainerService.java:1117)
at org.ow2.jonas.web.tomcat6.Tomcat6Service.__registerWar(Tomcat6Service.java:1354)
at org.ow2.jonas.web.tomcat6.Tomcat6Service.registerWar(Tomcat6Service.java)
at org.ow2.jonas.web.base.WARDeployer.doDeploy(WARDeployer.java:78)
at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:96)
at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:95)
at org.ow2.util.execution.helper.RunnableHelper.execute(RunnableHelper.java:77)
at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:94)
at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deploy(DeployerManager.java:129)
at org.ow2.jonas.lib.jmbeans.J2EEServer.__deploy(J2EEServer.java:772)
at org.ow2.jonas.lib.jmbeans.J2EEServer.deploy(J2EEServer.java)
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:597)
at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:458)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
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:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.AbstractMethodError
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:201)
at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:112)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:476)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:362)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
... 57 more

Here are the dependency of my pom.xml project :

<dependency>
  <groupId>com.mastertv</groupId>
  <artifactId>dao</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  </dependency>
  <dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.1.3</version>
    </dependency>
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-beans</artifactId>
  <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-asm</artifactId>
  <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>3.1.1.RELEASE</version>
  </dependency>
  <dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
  <version>1.9.2</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>3.1.1.RELEASE</version>
    </dependency>
  <dependency>
  <groupId>com.googlecode.ehcache-spring-annotations</groupId>
  <artifactId>ehcache-spring-annotations</artifactId>
  <version>1.2.0</version>
</dependency>
  <dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-jaxrs</artifactId>
  <version>1.9.2</version>
  </dependency>
  <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>3.1.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>3.1.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>3.1.1.RELEASE</version>
    </dependency>
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>3.1.1.RELEASE</version>
   </dependency>
   <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>3.1.1.RELEASE</version>
   </dependency>
   <dependency>
    <groupId>org.springmodules</groupId>
    <artifactId>spring-modules-jakarta-commons</artifactId>
    <version>0.8a</version>
    <exclusions>
    <exclusion>
    <artifactId>servlet-api</artifactId>
    <groupId>javax.servlet</groupId>
    </exclusion>
    </exclusions>
   </dependency>
   <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.3</version>
   </dependency>
   <dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.5.0</version>
   </dependency>
  </dependencies>


Does somebody could help me to figure out this exception.

Thanks.

Udo Kuehne

unread,
Aug 4, 2012, 3:57:57 PM8/4/12
to ehcache-sprin...@googlegroups.com
Hallo ,

About your Maven-configuration;
Your cglib version might not be enough, please try the last avialable, try:

<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib-nodep</artifactId>
    <version>2.2.2</version>
</dependency>

other error:
Inside Tomcat 6 is still used the Servlet-API 2.5, try:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>

minor misstake: don't use Alpah-Version ;), try:

<dependency>
    <groupId>org.springmodules</groupId>
    <artifactId>spring-modules-jakarta-commons</artifactId>
    <version>0.8</version>
</dependency>


--
have fun,
Bye udoline


2012/8/4 sdvsbm <sebasti...@gmail.com>

Udo Kuehne

unread,
Aug 4, 2012, 4:31:16 PM8/4/12
to ehcache-sprin...@googlegroups.com
Hallo ,

About your Maven-configuration;
The cglib isn't needed in this context within "net.sf.ehcache:ehcache-core:2.5.0". It uses on other Java bytecode manipulation framework.

Todo, exclude all behaviors of cglib in your Maven-configuration or garant that javassist must be stand before cglib in your CLASSPATH at runtime, try:

<dependency>
    <groupId>javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.4.GA</version>
</dependency>


check out this is empty:
mvn help:effective-pom |grep cglib 

--
have more fun,
Bye udoline

sdvsbm

unread,
Aug 5, 2012, 5:48:10 PM8/5/12
to ehcache-sprin...@googlegroups.com
Hi udoline,

First, thank you for your answer and the solution you exposed. 

Unfortunatly, it seems like CGLIB is required as the @Configuration anotation seems to take place in the framework. However, I tried to do think simplier using the Spring 3 cache abstraction (i.e. not using the @Cacheable ehcache-annotation library annotation, but the one given by spring framework). The fact is that it's leading to the same exception :

Caused by: java.lang.AbstractMethodError
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)

I really begin to get mad about it as everything's working fine on tomcat but not on jonas. I still can not figure out why today.

sdvsbm

Udo Kuehne

unread,
Aug 6, 2012, 12:01:32 PM8/6/12
to ehcache-sprin...@googlegroups.com
Hi,

note: (re)move cglib at the *END* of Your Runtime-CLASSPATH

check this for more infos about maven classpath building on given project dependencies:
http://stackoverflow.com/questions/793054/maven-classpath-order-issues

--
bye udoline

2012/8/5 sdvsbm <sebasti...@gmail.com>
Reply all
Reply to author
Forward
0 new messages