You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Koon Sang <ko...@igine.com> on 2010/04/06 13:06:34 UTC
Calling groovy from scheduled job (OFVIZ 9.04)
Hello,
I have created a scheduled job to run at certain time. The job calls my
service which I define as the followoing:
<service name="AutoNotificationCertificateExpiry" engine="groovy"
location="component://order/webapp/ordermgr/order/RunAutoNotification.groovy"
invoke="">
<description>Auto-notification Certificate Expiry</description>
</service>
RunAutoNotification.groovy is as follows (omitting the import):
try
{
AutoNotification notification = new AutoNotification(delegator,
dispatcher);
notification.notifyUsersOfExpiringCertificate();
return "success"
}
catch (Exception e)
{
Debug.logError(e, "error", "RunAutoNotification.groovy");
return "error"
}
I noticed that during OFBIZ startup, the job is called. However, I got the
following error:
groovy.lang.MissingPropertyException: No such property: delegator for class:
RunAutoNotification
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getGroovyObjectProperty(ScriptBytecodeAdapter.java:537)
RunAutoNotification.run(RunAutoNotification.groovy:7)
org.ofbiz.base.util.GroovyUtil.runScriptAtLocation(GroovyUtil.java:117)
org.ofbiz.service.engine.GroovyEngine.serviceInvoker(GroovyEngine.java:64)
org.ofbiz.service.engine.GroovyEngine.runSync(GroovyEngine.java:52)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:390)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:219)
org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:159)
org.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java:69)
org.ofbiz.service.job.JobInvoker.run(JobInvoker.java:241)
java.lang.Thread.run(Unknown Source)
Looking at the error log, I guess "delegator" cannot be found. I just
wonder how I can get a reference of delegator and dispatcher to pass to
groovy for scheduled job. The code runs fine if I called it from a web
page.
Your kind advice is appreciated.
Thank you.
--
View this message in context: http://n4.nabble.com/Calling-groovy-from-scheduled-job-OFVIZ-9-04-tp1752673p1752673.html
Sent from the OFBiz - User mailing list archive at Nabble.com.
Re: Calling groovy from scheduled job (OFVIZ 9.04)
Posted by Koon Sang <ko...@igine.com>.
Thanks, Joe. It is working fine now.
--
View this message in context: http://n4.nabble.com/Calling-groovy-from-scheduled-job-OFVIZ-9-04-tp1752673p1753750.html
Sent from the OFBiz - User mailing list archive at Nabble.com.
Re: Calling groovy from scheduled job (OFVIZ 9.04)
Posted by Joe Eckard <jo...@redrocketcorp.com>.
You can get the delegator from the dispatch context, which is
populated in the binding for groovy services as "dctx".
delegator = dctx.getDelegator(); // add to RunAutoNotification.groovy
On Apr 6, 2010, at 7:06 AM, Koon Sang wrote:
>
> Hello,
>
> I have created a scheduled job to run at certain time. The job
> calls my
> service which I define as the followoing:
>
> <service name="AutoNotificationCertificateExpiry" engine="groovy"
> location="component://order/webapp/ordermgr/order/
> RunAutoNotification.groovy"
> invoke="">
> <description>Auto-notification Certificate Expiry</description>
> </service>
>
>
> RunAutoNotification.groovy is as follows (omitting the import):
>
> try
> {
> AutoNotification notification = new AutoNotification(delegator,
> dispatcher);
> notification.notifyUsersOfExpiringCertificate();
>
> return "success"
> }
> catch (Exception e)
> {
> Debug.logError(e, "error", "RunAutoNotification.groovy");
> return "error"
> }
>
>
> I noticed that during OFBIZ startup, the job is called. However, I
> got the
> following error:
>
> groovy.lang.MissingPropertyException: No such property: delegator
> for class:
> RunAutoNotification
> org
> .codehaus
> .groovy
> .runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
> org
> .codehaus
> .groovy
> .runtime
> .ScriptBytecodeAdapter
> .getGroovyObjectProperty(ScriptBytecodeAdapter.java:537)
> RunAutoNotification.run(RunAutoNotification.groovy:7)
> org.ofbiz.base.util.GroovyUtil.runScriptAtLocation(GroovyUtil.java:
> 117)
> org
> .ofbiz.service.engine.GroovyEngine.serviceInvoker(GroovyEngine.java:
> 64)
> org.ofbiz.service.engine.GroovyEngine.runSync(GroovyEngine.java:52)
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:
> 390)
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:
> 219)
> org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:
> 159)
> org.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java:
> 69)
> org.ofbiz.service.job.JobInvoker.run(JobInvoker.java:241)
> java.lang.Thread.run(Unknown Source)
>
>
> Looking at the error log, I guess "delegator" cannot be found. I just
> wonder how I can get a reference of delegator and dispatcher to pass
> to
> groovy for scheduled job. The code runs fine if I called it from a
> web
> page.
>
> Your kind advice is appreciated.
> Thank you.
>
> --
> View this message in context: http://n4.nabble.com/Calling-groovy-from-scheduled-job-OFVIZ-9-04-tp1752673p1752673.html
> Sent from the OFBiz - User mailing list archive at Nabble.com.