在Tomcat中部署时,Grails石英插件不工作 [英] Grails quartz plugin is not working when deployed in Tomcat

查看:168
本文介绍了在Tomcat中部署时,Grails石英插件不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用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 创建了一场战争。



我使用的是


Tomcat 6 < br> Grails 2.0.1
石英1.0-RC9


在现有的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 using

Tomcat 6
Grails 2.0.1
quartz 1.0-RC9

What 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 file

Jul 29, 2013 3:35:27 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jul 29, 2013 3:35:32 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
org.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 more
Caused 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 more
Caused 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 log
INFO: ContextListener: contextInitialized()
Jul 29, 2013 3:35:34 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Jul 29, 2013 3:36:31 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Jul 29, 2013 3:36:31 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()

Can anyone please help me to point-out what's is wrong in here?

解决方案

I would suggest doing a:

grails clean

and also deleting the .slcache folder, that you can find under

~/.grails/.slcache

regards

这篇关于在Tomcat中部署时,Grails石英插件不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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