2013-07-24 18 views
8

Ho un'applicazione Web che è stata sviluppata utilizzando Grails. Sto cercando di implementare un processo in background che analizza una tabella in DB ogni 5 minuti usando il plugin quartz1.0-RC9 per Grails.Il plugin quarzo Grails non funziona quando distribuito in Tomcat

Prima di provare a codificare la logica effettiva sto imparando come utilizzare il plug-in poiché sono nuovo del quarzo. Così ho creato un lavoro che stampa il messaggio "hai" con il timestamp corrente per ogni 5 secondi.

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 
    } 
} 

E il mio QuartzConfig.groovy è

quartz { 
    autoStartup = true 
    jdbcStore = false 
    waitForJobsToCompleteOnShutdown = true 
    exposeSchedulerInRepository = false 

    props { 
     scheduler.skipUpdateCheck = true 
    } 
} 

environments { 
    test { 
     quartz { 
      autoStartup = true 
     } 
    } 
    production { 
     quartz { 
      autoStartup = true 
     } 
    } 
} 

Questo funziona bene quando viene eseguito utilizzando il comando grails run-app. Ma quando viene creata una guerra usando il comando grails prod war e quando viene distribuito in Tomcat non funziona nulla. Anche la pagina index.html non viene caricata, ma dà l'errore Http-404.

Ho fatto riferimento a questo plugin in BuilConfig.groovy come menzionato nella documentazione sotto la categoria di plugin.

compile ":quartz:1.0-RC9" 

Ma ancora niente funziona.

Quindi ho creato un nuovo progetto Grails che non ha altro che il solo codice quarzo menzionato sopra e ha creato una guerra utilizzando grails prod war. Funziona perfettamente con Tomcat.

sto usando

Tomcat 6
Grails 2.0.1
quartz 1.0-RC9

Quello che mi manca durante la creazione di un posto di lavoro in applicazione graal già esistente?

Per favore qualcuno mi aiuti.

Ho fatto alcune basi su questo problema. Sulla creazione di guerra della mia applicazione graal "Timeprocess" di grails dev-war e la distribuzione sotto Tomcat6, sto ottenendo il seguente nel file di localhost.txt

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() 

Qualcuno può per favore mi aiuti a indicare-che cosa c'è che non va qui?

+0

Lo stesso codice di quarzo funziona in applicazione fresco, ma non nel vecchio quindi probabilmente il problema è nella tua applicazione e non nel codice al quarzo Prova "grails prod run-war" con la vecchia applicazione e vedi se il problema si riproduce. –

+0

Ho provato come hai menzionato @sudhir. Ma nulla è arrivato in tomcat-out.txt sotto target. Solo "Server in esecuzione. Cerca 8080: 8080localhost" –

+0

Per favore ... Qualcuno mi aiuti in questo mentre sto lottando ...! –

risposta

2

vorrei suggerire facendo un:

grails clean 

e anche l'eliminazione della cartella .slcache, che si può trovare sotto

~/.grails/.slcache 

riguarda

Problemi correlati