gpt4 book ai didi

grails - 服务器启动时过期的 activiti 作业抛出异常 - Grails

转载 作者:行者123 更新时间:2023-12-01 15:53:43 24 4
gpt4 key购买 nike

这是关于 Grails 应用程序中的 activiti 工作流计时器作业。

当使用过期作业启动 grails 应用程序时,正常的 grails 功能(例如日志和域类的方法)会抛出异常。

例如:

Caused by: groovy.lang.MissingPropertyException: No such property: log for class: com.service.common.UtilityService
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassGetPropertySite.getProperty(PogoMetaClassGetPropertySite.java:50)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:239)
at com.service.common.UtilityService.insertToQueue(UtilityService.groovy:370)
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.activiti.engine.impl.javax.el.BeanELResolver.invoke(BeanELResolver.java:479)
... 71 more

这发生在从 Spring STS 运行应用程序的开发环境中。我们正在为 grails (1.3.6) 使用 activiti 插件 5.8.2

网络应用程序完全启动后,作业(安排到启动后的某个时间)正常运行并且没有抛出丢失属性异常。

即使我们可以通过使用 private static final log = LogFactory.getLog(this) 来解决日志属性丢失的问题,但是任何对域类的引用都会抛出错误,比如使用 get或查找方法。

例如:

Caused by: groovy.lang.MissingMethodException: No signature of method: static com.domain.wr.WorkRequest.read() is applicable for argument types: (java.lang.String) values: [44700]
Possible solutions: getId(), getAt(java.lang.String), setId(java.lang.Long), grep(java.lang.Object), each(groovy.lang.Closure), find(groovy.lang.Closure)
at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1357)
at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1343)
at groovy.lang.ExpandoMetaClass.invokeStaticMethod(ExpandoMetaClass.java:1082)
at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:50)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at com.service.common.UtilityService.insertToQueue(UtilityService.groovy:373)
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.activiti.engine.impl.javax.el.BeanELResolver.invoke(BeanELResolver.java:479)
... 71 more

事件配置

配置.groovy

// Added by the Grails Activiti plugin:
activiti {
processEngineName = "activiti-engine-default"
databaseType = "oracle"
deploymentName = appName
history = "audit" // "none", "activity", "audit" or "full"
sessionUsernameKey = "username"
useFormKey = true
deploymentResources = ["classpath:activiti/escalation/WorkRequest.bpmn20.xml"]

}

配置属性

activiti.processEngineName =activiti-engine-default
activiti.databaseSchemaUpdate =true
activiti.jobExecutorActivate =true
activiti.mailServerHost = "mail1.net"
activiti.mailServerPort = 25
activiti.mailServerUsername = ""
activiti.mailServerPassword = ""
activiti.mailServerDefaultFrom = ""

这会终止我的应用程序,因为停机时间会使工作流无法用于计时器任务。

最佳答案

我或多或少遇到了同样的问题,在我们的案例中,是由于 Activiti 在 Spring 注入(inject)完成之前开始执行作业造成的。这就是为什么它只发生在启动时:作业正在访问尚不存在的属性。

您可以在应用程序完成引导后通过增加 ACT_RU_JOB 表中的 RETRIES_ 来确认您处于相同的情况,并查看作业是否成功执行。

如果是这种情况,我认为唯一的选择是升级插件,如果仍然失败,请创建一个错误。

关于grails - 服务器启动时过期的 activiti 作业抛出异常 - Grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com