本文介绍了在Tomcat中部署时,Grails石英插件不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我有一个使用Grails开发的Web应用程序。我试图实现一个后台进程,使用适用于Grails的quartz1.0-RC9插件每5分钟扫描一个表中的表。 在尝试编码实际逻辑我正在学习如何使用插件,因为我是石英新手。所以我创建了一个打印hai消息的工作,每5秒钟打印一次当前时间戳。 class checkJob { static triggers = {简单名称:'sampleQuartz',startDelay:10000,repeatInterval:5000l,repeatCount:-1 //在5秒内执行一次作业} def execute(){ printlnhai !!!+ new Date()//执行作业} } 我的QuartzConfig.groovy是 pre $石英{ autoStartup = true jdbcStore = false waitForJobsToCompleteOnShutdown = true exposeSchedulerInRepository = false 道具{ scheduler.skipUpdateCheck = true } $ b环境{测试{石英{ autoStartup = true } } 生产{ quartz { autoStartup = true } } } 当使用命令 grails run-app 运行时,此工作正常。但是当使用命令 grails prod war 创建战争并且在Tomcat中部署时没有任何效果。甚至index.html页面也没有加载,而是给出了Http-404错误。 我在BuilConfig.groovy中引用了插件,如插件类别下的文档中所述。 compile:quartz:1.0-RC9 但是没有任何工作。然后我创建了一个新的Grails项目,它只有上面提到的石英代码,使用 grails prod war 创建了一场战争。 我使用的是 在现有的grails应用程序中创建作业时缺少的东西? 请有人帮助我。 我在这个问题上做了一些基础工作。在通过 grails dev-war 创建我的Grails应用程序Timeprocess的战争,并在Tomcat6下部署时,我在localhost.txt文件中获得以下内容: 2013年7月29日3:35:27 org.apache.catalina.core.ApplicationContext log INFO:初始化Spring根WebApplicationContext 七月29,2013 3:35:32 PM org.apache.catalina.core.StandardContext listenerStart SEVERE:将上下文初始化事件发送到类的监听器实例的异常org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext.xml]中定义的名为'pluginManager'的bean创建时出错:init方法的调用失败;嵌套异常是了java.lang.RuntimeException:无法找到与在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean类grails.plugins.quartz.DefaultGrailsJobClass 类参数的构造(AbstractAutowireCapableBeanFactory.java:1455)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在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 )在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)在org.springframework.beans.fac在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons tory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)(DefaultListableBeanFactory.java:567)。在org.springframework.context。 support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)处org.springframework.web.context.ContextLoader org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)。 configureAndRefreshWebApplicationContext(ContextLoader.java:384)位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)位于org.codehaus.groovy.grails.web.context.GrailsContextLoader。 initWebApplicationContext(GrailsContextLoader.java:66) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.apache.catalina.core.StandardCon text.listenerStart(StandardContext.java:4135) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 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)在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)在org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)在org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)在org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)在org .apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina .core.ContainerBase.start(ContainerBase.java:1053)$或b $ at或g.apache.catalina.core.StandardHost.start(StandardHost.java:785)在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)在org.apache。 catalina.core.StandardEngine.start(StandardEngine.java:445)在org.apache.catalina.core.StandardService.start(StandardService.java:519)在org.apache.catalina.core。 StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)导致通过:java.lang.RuntimeException:无法找到具有Class参数的构造函数class org.codehaus.groovy.grails.commons.ArtefactHandlerAdapter.newArtefactClass(ArtefactHandlerAdapter.java:113)在org.codehaus.groovy.grails.commons.DefaultGrailsApplication中的类grails.plugins.quartz.DefaultGrailsJobClass 。在org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615)处org.codehaus.groovy.grails.commons.DefaultGrailsApplication中的addArtefact(DefaultGrailsApplication.java:894)。 configureLoadedClasses(DefaultGrailsApplication.java:326)处org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean org.codehaus.groovy.grails.commons.DefaultGrailsApplication.initialise(DefaultGrailsApplication.java:825)。的afterPropertiesSet(GrailsPluginManagerFactoryBean.java:110)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)在org.springframework.beans.factory.suppor t.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ... 37个引起的:java.lang.reflect.InvocationTargetException 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source )在org.codehaus.groovy.grails.commons.ArtefactHandlerAdapter.newArtefactClass(ArtefactHandlerAdapter.java:104) ... 44 more 引起:java.lang.IncompatibleClassChangeError:实现类 at grails.plugins.quartz.config.TriggersConfigBuilder.createTrigger(TriggersConfigBuilder.groovy:74) at grails.plugins.quartz.config.TriggersConfigBuilder.createNode(TriggersConfigBuilder.groovy:215)在grails.plugins.quartz.config.TriggersConfigBuilder.crea teNode(TriggersConfigBuilder.groovy:208) at Timeprocess.ScheduleScanJob $ __ clinit__closure1.doCall(ScheduleScanJob.groovy:7) at grails.plugins.quartz.config.TriggersConfigBuilder.build(TriggersConfigBuilder.groovy:52) at grails.plugins.quartz.DefaultGrailsJobClass.evaluateTriggers(DefaultGrailsJobClass.java:58) at grails.plugins.quartz.DefaultGrailsJobClass。< init>(DefaultGrailsJobClass.java:48) Jul 24,2013 3:35:34 PM org.apache.catalina.core.ApplicationContext log INFO:ContextListener:contextInitialized() 2013年7月29日下午3:35:34 org.apache.catalina。 core.ApplicationContext log INFO:SessionListener:contextInitialized() org.apache.catalina.core.ApplicationContext log INFO:SessionListener:contextDestroyed() 七月29,2013 3:36:31 PM org.apache.catalina.core.ApplicationContext log INFO:ContextListener:contextDestroyed() 任何人都可以帮助我t o指出这里有什么不对?解决方案我会建议做一个: grails clean .slcache文件夹,您可以在 〜/ .grails / .slcache 问候 I have a web application that was developed using Grails. I'm trying to implement a background process that scans a table in DB for every 5 mins using quartz1.0-RC9 plugin for Grails.Before trying to code the actual logic I'm learning how to use the plugin as I'm new to quartz. So I created a job that prints the message "hai" with the current timestamp for every 5 seconds.class checkJob { static triggers = { simple name:'sampleQuartz', startDelay:10000, repeatInterval: 5000l, repeatCount: -1 // execute job once in 5 seconds } def execute() { println "hai!!!"+new Date()// execute job }}And my QuartzConfig.groovy is quartz { autoStartup = true jdbcStore = false waitForJobsToCompleteOnShutdown = true exposeSchedulerInRepository = false props { scheduler.skipUpdateCheck = true }}environments { test { quartz { autoStartup = true } } production { quartz { autoStartup = true } }}This works fine when run using the command grails run-app. But when a war is created using the command grails prod war and when deployed in Tomcat nothing works. Even the index.html page is not loading instead it gives Http-404 error.I have referenced this plugin in BuilConfig.groovy as mentioned in the documentation under plugin category.compile ":quartz:1.0-RC9"But yet nothing works.Then I created a new Grails project that has nothing but only the quartz code mentioned above and created a war using grails prod war. This works fine with Tomcat.I'm usingWhat I'm missing while creating a job in already existing grails application?Please somebody help me.I did some groundwork on this issue. On creating war of my grails application "Timeprocess" by grails dev-war and deploying under Tomcat6, I am getting the following in localhost.txt fileJul 29, 2013 3:35:27 PM org.apache.catalina.core.ApplicationContext logINFO: Initializing Spring root WebApplicationContextJul 29, 2013 3:35:32 PM org.apache.catalina.core.StandardContext listenerStartSEVERE: Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Unable to locate constructor with Class parameter for class grails.plugins.quartz.DefaultGrailsJobClass at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 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:567) 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:384) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) at org.codehaus.groovy.grails.web.context.GrailsContextLoader.initWebApplicationContext(GrailsContextLoader.java:66) 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.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.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)Caused by: java.lang.RuntimeException: Unable to locate constructor with Class parameter for class grails.plugins.quartz.DefaultGrailsJobClass at org.codehaus.groovy.grails.commons.ArtefactHandlerAdapter.newArtefactClass(ArtefactHandlerAdapter.java:113) at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:894) at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615) at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.configureLoadedClasses(DefaultGrailsApplication.java:326) at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.initialise(DefaultGrailsApplication.java:825) at org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean.afterPropertiesSet(GrailsPluginManagerFactoryBean.java:110) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ... 37 moreCaused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.codehaus.groovy.grails.commons.ArtefactHandlerAdapter.newArtefactClass(ArtefactHandlerAdapter.java:104) ... 44 moreCaused by: java.lang.IncompatibleClassChangeError: Implementing class at grails.plugins.quartz.config.TriggersConfigBuilder.createTrigger(TriggersConfigBuilder.groovy:74) at grails.plugins.quartz.config.TriggersConfigBuilder.createNode(TriggersConfigBuilder.groovy:215) at grails.plugins.quartz.config.TriggersConfigBuilder.createNode(TriggersConfigBuilder.groovy:208) at Timeprocess.ScheduleScanJob$__clinit__closure1.doCall(ScheduleScanJob.groovy:7) at grails.plugins.quartz.config.TriggersConfigBuilder.build(TriggersConfigBuilder.groovy:52) at grails.plugins.quartz.DefaultGrailsJobClass.evaluateTriggers(DefaultGrailsJobClass.java:58) at grails.plugins.quartz.DefaultGrailsJobClass.<init>(DefaultGrailsJobClass.java:48)Jul 29, 2013 3:35:34 PM org.apache.catalina.core.ApplicationContext logINFO: ContextListener: contextInitialized()Jul 29, 2013 3:35:34 PM org.apache.catalina.core.ApplicationContext logINFO: SessionListener: contextInitialized()Jul 29, 2013 3:36:31 PM org.apache.catalina.core.ApplicationContext logINFO: SessionListener: contextDestroyed()Jul 29, 2013 3:36:31 PM org.apache.catalina.core.ApplicationContext logINFO: ContextListener: contextDestroyed()Can anyone please help me to point-out what's is wrong in here? 解决方案 I would suggest doing a:grails cleanand also deleting the .slcache folder, that you can find under ~/.grails/.slcacheregards 这篇关于在Tomcat中部署时,Grails石英插件不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!