带有Jetty的Geronimo v2.1下的Spring [英] Spring under Geronimo v2.1 with Jetty

查看:94
本文介绍了带有Jetty的Geronimo v2.1下的Spring的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过Jetty Web服务器在Geronimo容器上部署Java EE Web应用程序.不幸的是,我遇到了一些麻烦,遇到了NoSuchMethod错误.我看到有人遇到类似的问题,解决方案是从类路径中删除冗余的spring-framework库.但这对我不起作用,我的类路径已正确构造.这是WEB-INF/lib目录的内容:

  aopalliance-1.0.jar
  commons-collections-3.2.1.jar
  commons-logging-1.1.1.jar
  dom4j-1.6.1.jar
  h2-1.3.164.jar
  hibernate-commons-annotations-3.2.0.Final.jar
  hibernate-core-3.6.9.Final.jar
  hibernate-jpa-2.0-api-1.0.1.Final.jar
  javassist-3.12.1.GA.jar
  log4j-1.2.16.jar
  slf4j-api-1.6.4.jar
  slf4j-log4j12-1.6.4.jar
  spring-aop-3.1.1.RELEASE.jar
  spring-asm-3.1.1.RELEASE.jar
  spring-beans-3.1.1.RELEASE.jar
  spring-context-3.1.1.RELEASE.jar
  spring-core-3.1.1.RELEASE.jar
  spring-expression-3.1.1.RELEASE.jar
  spring-hibernate3-2.0.8.jar
  spring-jdbc-3.1.1.RELEASE.jar
  spring-orm-3.1.1.RELEASE.jar
  spring-tx-3.1.1.RELEASE.jar
  spring-web-3.1.1.RELEASE.jar
  spring-webmvc-3.1.1.RELEASE.jar
  spring-webmvc-3.1.1.RELEASE-sources.jar

关于冗余库的问题,Web容器加载自己的spring-framework版本是否可能不同于WEB-INF/lib中给出的版本?我以为WEB-INF/lib目录具有更高的优先级...这是我在Geronimo下的第一个项目,但是我看到该项目可以包含geronimo-web.xml文件,也许我应该在其中放置一些与库加载/依赖项有关的引用? /p>

这是堆栈跟踪:

Geronimo Application Server started
  2012-02-24 20:19:17,463 WARN  [JettyModuleBuilder] Web application . does not contain a WEB-INF/geronimo-web.xml deployment plan.  This may or may not be a problem, depending on whether you have things like resource references that need to be resolved.  You can also give the deployer a separate deployment plan file on the command line.
  2012-02-24 20:19:22,122 ERROR [log] failed dispatcher
  org.apache.xbean.recipe.ConstructionException: Error invoking constructor: public org.springframework.web.servlet.DispatcherServlet()
      at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:962)
      at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
      at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
      at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
      at org.apache.geronimo.j2ee.annotation.Holder.newInstance(Holder.java:173)
      at org.apache.geronimo.jetty6.JettyWebAppContext.newInstance(JettyWebAppContext.java:317)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.newInstance(InternalJettyServletHolder.java:81)
      at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:253)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.internalDoStart(InternalJettyServletHolder.java:120)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.access$000(InternalJettyServletHolder.java:38)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder$StartCommand.lifecycleMethod(InternalJettyServletHolder.java:131)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:62)
      at org.apache.geronimo.jetty6.handler.ThreadClassloaderHandler.lifecycleCommand(ThreadClassloaderHandler.java:57)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:60)
      at org.apache.geronimo.jetty6.handler.InstanceContextHandler.lifecycleCommand(InstanceContextHandler.java:81)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:60)
      at org.apache.geronimo.jetty6.handler.UserTransactionHandler.lifecycleCommand(UserTransactionHandler.java:63)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:60)
      at org.apache.geronimo.jetty6.handler.ComponentContextHandler.lifecycleCommand(ComponentContextHandler.java:57)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.doStart(InternalJettyServletHolder.java:107)
      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
      at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612)
      at org.mortbay.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:980)
      at org.mortbay.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1037)
      at org.mortbay.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:736)
      at org.apache.geronimo.jetty6.JettyWebAppContext.registerServletHolder(JettyWebAppContext.java:497)
      at org.apache.geronimo.jetty6.JettyServletHolder.<init>(JettyServletHolder.java:80)
      at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:948)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:268)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:541)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:111)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:146)
      at org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:120)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:176)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:44)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:254)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:294)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:541)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:111)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:146)
      at org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:120)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:176)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:44)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:254)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:294)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:555)
      at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
      at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:456)
      at org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:188)
      at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:563)
      at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:544)
      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.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
      at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
      at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
      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.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
      at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
      at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
      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 java.security.AccessController.doPrivileged(Native Method)
      at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1367)
      at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
      at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
      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.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeArguments(Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/Class;
      at org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo(GenericConversionService.java:275)
      at org.springframework.core.convert.support.GenericConversionService.addConverter(GenericConversionService.java:93)
      at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:61)
      at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53)
      at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42)
      at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44)
      at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42)
      at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101)
      at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)
      at org.springframework.web.context.support.StandardServletEnvironment.<init>(StandardServletEnvironment.java:43)
      at org.springframework.web.servlet.HttpServletBean.<init>(HttpServletBean.java:90)
      at org.springframework.web.servlet.FrameworkServlet.<init>(FrameworkServlet.java:211)
      at org.springframework.web.servlet.DispatcherServlet.<init>(DispatcherServlet.java:323)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
      ... 96 more

解决方案

最后,我找到了两种可能的解决方案.一种更明显的方法是使用Geronimo专用的Spring库,例如Geronimo v2.1使用的Spring 2.5.6.另一个更合理的方法是创建/编辑geronimo-web.xml.对我来说,我必须覆盖加载顺序,这意味着WEB-INF/lib库具有更高的加载优先级.

<sys:environment>
    <sys:hidden-classes>
        <sys:filter>org.springframework</sys:filter>
        <sys:filter>org.hibernate</sys:filter>
        <sys:filter>javax.persistence</sys:filter>
        <sys:filter>org.apache.log4j</sys:filter>
        <sys:filter>org.slf4j</sys:filter>
        <sys:filter>org.apache.tiles</sys:filter>
        <sys:filter>javassist</sys:filter>
        <sys:filter>org.h2</sys:filter>
        <sys:filter>org.dom4j</sys:filter>
        <sys:filter>org.apache.commons</sys:filter>
        <sys:filter>org.aopalliance</sys:filter>
    </sys:hidden-classes>
</sys:environment>

I trying to deploy Java EE web application on Geronimo container with Jetty web server. Unfortunately I have some troubles, I'm getting NoSuchMethod error. I saw that somebody had similar problem, and the solution was to remove redundant spring-framework library from classpath. But it doesn't work for me, my classpath is correctly constructed. Here's contents of WEB-INF/lib directory:

  aopalliance-1.0.jar
  commons-collections-3.2.1.jar
  commons-logging-1.1.1.jar
  dom4j-1.6.1.jar
  h2-1.3.164.jar
  hibernate-commons-annotations-3.2.0.Final.jar
  hibernate-core-3.6.9.Final.jar
  hibernate-jpa-2.0-api-1.0.1.Final.jar
  javassist-3.12.1.GA.jar
  log4j-1.2.16.jar
  slf4j-api-1.6.4.jar
  slf4j-log4j12-1.6.4.jar
  spring-aop-3.1.1.RELEASE.jar
  spring-asm-3.1.1.RELEASE.jar
  spring-beans-3.1.1.RELEASE.jar
  spring-context-3.1.1.RELEASE.jar
  spring-core-3.1.1.RELEASE.jar
  spring-expression-3.1.1.RELEASE.jar
  spring-hibernate3-2.0.8.jar
  spring-jdbc-3.1.1.RELEASE.jar
  spring-orm-3.1.1.RELEASE.jar
  spring-tx-3.1.1.RELEASE.jar
  spring-web-3.1.1.RELEASE.jar
  spring-webmvc-3.1.1.RELEASE.jar
  spring-webmvc-3.1.1.RELEASE-sources.jar

Referencing to redundant libraries trouble, is that possible that web container loads own version of spring-framework different than given in WEB-INF/lib? I thought that WEB-INF/lib directory has better priority... It's my first project under Geronimo, but I saw that project can contain geronimo-web.xml file, maybe I should place there something referenced with library loading/dependencies?

Here's the stacktrace:

Geronimo Application Server started
  2012-02-24 20:19:17,463 WARN  [JettyModuleBuilder] Web application . does not contain a WEB-INF/geronimo-web.xml deployment plan.  This may or may not be a problem, depending on whether you have things like resource references that need to be resolved.  You can also give the deployer a separate deployment plan file on the command line.
  2012-02-24 20:19:22,122 ERROR [log] failed dispatcher
  org.apache.xbean.recipe.ConstructionException: Error invoking constructor: public org.springframework.web.servlet.DispatcherServlet()
      at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:962)
      at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
      at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
      at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
      at org.apache.geronimo.j2ee.annotation.Holder.newInstance(Holder.java:173)
      at org.apache.geronimo.jetty6.JettyWebAppContext.newInstance(JettyWebAppContext.java:317)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.newInstance(InternalJettyServletHolder.java:81)
      at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:253)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.internalDoStart(InternalJettyServletHolder.java:120)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.access$000(InternalJettyServletHolder.java:38)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder$StartCommand.lifecycleMethod(InternalJettyServletHolder.java:131)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:62)
      at org.apache.geronimo.jetty6.handler.ThreadClassloaderHandler.lifecycleCommand(ThreadClassloaderHandler.java:57)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:60)
      at org.apache.geronimo.jetty6.handler.InstanceContextHandler.lifecycleCommand(InstanceContextHandler.java:81)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:60)
      at org.apache.geronimo.jetty6.handler.UserTransactionHandler.lifecycleCommand(UserTransactionHandler.java:63)
      at org.apache.geronimo.jetty6.handler.AbstractImmutableHandler.lifecycleCommand(AbstractImmutableHandler.java:60)
      at org.apache.geronimo.jetty6.handler.ComponentContextHandler.lifecycleCommand(ComponentContextHandler.java:57)
      at org.apache.geronimo.jetty6.InternalJettyServletHolder.doStart(InternalJettyServletHolder.java:107)
      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
      at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:612)
      at org.mortbay.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:980)
      at org.mortbay.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1037)
      at org.mortbay.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:736)
      at org.apache.geronimo.jetty6.JettyWebAppContext.registerServletHolder(JettyWebAppContext.java:497)
      at org.apache.geronimo.jetty6.JettyServletHolder.<init>(JettyServletHolder.java:80)
      at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:948)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:268)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:541)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:111)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:146)
      at org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:120)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:176)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:44)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:254)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:294)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:541)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:111)
      at org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:146)
      at org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:120)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:176)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:44)
      at org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:254)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:294)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
      at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:555)
      at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
      at org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:456)
      at org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:188)
      at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:563)
      at org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:544)
      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.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
      at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
      at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
      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.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
      at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
      at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(MBeanGBeanBridge.java:172)
      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 java.security.AccessController.doPrivileged(Native Method)
      at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1367)
      at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
      at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
      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.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeArguments(Ljava/lang/Class;Ljava/lang/Class;)[Ljava/lang/Class;
      at org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo(GenericConversionService.java:275)
      at org.springframework.core.convert.support.GenericConversionService.addConverter(GenericConversionService.java:93)
      at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:61)
      at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53)
      at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42)
      at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44)
      at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42)
      at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101)
      at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)
      at org.springframework.web.context.support.StandardServletEnvironment.<init>(StandardServletEnvironment.java:43)
      at org.springframework.web.servlet.HttpServletBean.<init>(HttpServletBean.java:90)
      at org.springframework.web.servlet.FrameworkServlet.<init>(FrameworkServlet.java:211)
      at org.springframework.web.servlet.DispatcherServlet.<init>(DispatcherServlet.java:323)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at org.apache.xbean.recipe.ReflectionUtil$ConstructorFactory.create(ReflectionUtil.java:952)
      ... 96 more

解决方案

Finally I found two possible solutions. One, more obvious, is to use Geronimo dedicated Spring library, for example Geronimo v2.1 used Spring 2.5.6. The other, more rational, is to create/edit geronimo-web.xml. For me I had to overwrite loading order, it means, WEB-INF/lib libraries have better priority to be loaded.

<sys:environment>
    <sys:hidden-classes>
        <sys:filter>org.springframework</sys:filter>
        <sys:filter>org.hibernate</sys:filter>
        <sys:filter>javax.persistence</sys:filter>
        <sys:filter>org.apache.log4j</sys:filter>
        <sys:filter>org.slf4j</sys:filter>
        <sys:filter>org.apache.tiles</sys:filter>
        <sys:filter>javassist</sys:filter>
        <sys:filter>org.h2</sys:filter>
        <sys:filter>org.dom4j</sys:filter>
        <sys:filter>org.apache.commons</sys:filter>
        <sys:filter>org.aopalliance</sys:filter>
    </sys:hidden-classes>
</sys:environment>

这篇关于带有Jetty的Geronimo v2.1下的Spring的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆