ofbiz进阶分析-Ofbiz开发之 异步服务与计划任务(Job Scheduler) 分析
2014-08-20 09:52
309 查看
http://www.myexception.cn/internet/1595264.html
如果想在java程序中添加一条jobSandbox调度的话可以用
dispatcher.schedule(
jobName, poolName, serviceName, serviceContext,
startTime, frequency, interval, count, endTime, maxRetry
);
webtools新建任务计划功能实际方法实现, 在如下位置:
org.ofbiz.webapp.event.CoreEvents.scheduleService
(HttpServletRequest request, HttpServletResponse response)
[dispatcher.schedule]方法的参数分析
jobName
:计划任务名称, 唯一标识
poolName
: job池名称 如果你不清楚这个是干嘛的话 默认pool好了
serviceName
: job 要调用的服务名称
serviceContext
:map型参数 ,job调度需要用到的数据 ,会被转化成XML格式保存到runtimeData中 (重复调度的时候会再次用到)
startTime
:long 格式 执行调度的开始时间
frequency
:执行频率 (数据类型有 RecurrenceRule.DAILY(执行频率以天为单位) 、
RecurrenceRule.HOURLY(执行频率以小时为单位)等等)
interval
:执行间隔 配合frequency 使用 , frequency 为单位 , interval 为数量 ,
联合起来其 XX天/次(XX天执行一次) 、XX小时/次(XX小时执行一次)
count
:执行次数 。 最大执行次数,当执行次数达到这个值时就不在执行了 。 如果设置-1 即不限次数
endTime
:执行结束时间,一般用在count 为-1 的时候 使用 ,当限时时间达到这一时间时 即不在执行
maxRetry
:失败后重复执行次数 , 某次调度执行失败的话 ,重复执行的次数 , -1 无限 , 知到执行成功为止
异步服务与计划任务的关系
异步服务在一个独立的线程中运行并且当前线程将不等待。
调用的服务将和调用它的服务或事件有效地开始并发运行。
当前服务的线程因此获取不到异步运行服务的信息。
异步服务中发生的错误将不会引发调用它的服务或者事件的失败或者错误。
异步服务实际上添加到Job Scheduler中。它是Job Scheduler的调用队列中等待调用的服务的任务。
Service Engine Tools(服务引擎工具)头的下面。选择Job List(任务列表)来看任务的全部列表。
没有Start Date/Time(起始日期和时间)的job还未开始。
那些有End Date/Time(结束日期/时间)的job已经完成。Run Time(运行时间)是他们被安排运行的时间。
初始化种子数据执行时,列表中所有突出的任务都被添加到JobSandbox实体中,
和指定它们多长时间执行一次的RecurrenceRule(也是一个实体)信息一起。
任务运行的Pool默认设置是pool。一个OFBiz实例可以专用来执行特定任务,
即便如此任务调度程序可能在每个实例中运行,即只有一个实例将运行该任务。
使用示例
//jobSandbox 功能解析
String jobName = "job1"; //计划名
String poolName = "pool"; //默认方式
String serviceName = "serviceName"; //计划执行的服务名称
Map<String, Object> service_context = FastMap.newInstance(); //服务需要的初始数据
long startTime = System.currentTimeMillis(); //开始时间
long endTime = System.currentTimeMillis(); //结束时间
int frequency = 1; //频率
int interval = 1000; //间隔
int count = 1; //次数
int maxRetry = 3; //最大重试次数
try {
dispatcher.schedule(jobName, poolName, serviceName, service_context,
startTime, frequency, interval, count, endTime, maxRetry);
} catch (GenericServiceException e) {
Debug.logError(e, e.getMessage(), module);
}
如果想在java程序中添加一条jobSandbox调度的话可以用
dispatcher.schedule(
jobName, poolName, serviceName, serviceContext,
startTime, frequency, interval, count, endTime, maxRetry
);
webtools新建任务计划功能实际方法实现, 在如下位置:
org.ofbiz.webapp.event.CoreEvents.scheduleService
(HttpServletRequest request, HttpServletResponse response)
[dispatcher.schedule]方法的参数分析
jobName
:计划任务名称, 唯一标识
poolName
: job池名称 如果你不清楚这个是干嘛的话 默认pool好了
serviceName
: job 要调用的服务名称
serviceContext
:map型参数 ,job调度需要用到的数据 ,会被转化成XML格式保存到runtimeData中 (重复调度的时候会再次用到)
startTime
:long 格式 执行调度的开始时间
frequency
:执行频率 (数据类型有 RecurrenceRule.DAILY(执行频率以天为单位) 、
RecurrenceRule.HOURLY(执行频率以小时为单位)等等)
interval
:执行间隔 配合frequency 使用 , frequency 为单位 , interval 为数量 ,
联合起来其 XX天/次(XX天执行一次) 、XX小时/次(XX小时执行一次)
count
:执行次数 。 最大执行次数,当执行次数达到这个值时就不在执行了 。 如果设置-1 即不限次数
endTime
:执行结束时间,一般用在count 为-1 的时候 使用 ,当限时时间达到这一时间时 即不在执行
maxRetry
:失败后重复执行次数 , 某次调度执行失败的话 ,重复执行的次数 , -1 无限 , 知到执行成功为止
异步服务与计划任务的关系
异步服务在一个独立的线程中运行并且当前线程将不等待。
调用的服务将和调用它的服务或事件有效地开始并发运行。
当前服务的线程因此获取不到异步运行服务的信息。
异步服务中发生的错误将不会引发调用它的服务或者事件的失败或者错误。
异步服务实际上添加到Job Scheduler中。它是Job Scheduler的调用队列中等待调用的服务的任务。
Service Engine Tools(服务引擎工具)头的下面。选择Job List(任务列表)来看任务的全部列表。
没有Start Date/Time(起始日期和时间)的job还未开始。
那些有End Date/Time(结束日期/时间)的job已经完成。Run Time(运行时间)是他们被安排运行的时间。
初始化种子数据执行时,列表中所有突出的任务都被添加到JobSandbox实体中,
和指定它们多长时间执行一次的RecurrenceRule(也是一个实体)信息一起。
任务运行的Pool默认设置是pool。一个OFBiz实例可以专用来执行特定任务,
即便如此任务调度程序可能在每个实例中运行,即只有一个实例将运行该任务。
使用示例
//jobSandbox 功能解析
String jobName = "job1"; //计划名
String poolName = "pool"; //默认方式
String serviceName = "serviceName"; //计划执行的服务名称
Map<String, Object> service_context = FastMap.newInstance(); //服务需要的初始数据
long startTime = System.currentTimeMillis(); //开始时间
long endTime = System.currentTimeMillis(); //结束时间
int frequency = 1; //频率
int interval = 1000; //间隔
int count = 1; //次数
int maxRetry = 3; //最大重试次数
try {
dispatcher.schedule(jobName, poolName, serviceName, service_context,
startTime, frequency, interval, count, endTime, maxRetry);
} catch (GenericServiceException e) {
Debug.logError(e, e.getMessage(), module);
}
相关文章推荐
- ofbiz进阶分析-Ofbiz开发之 异步服务与计划任务(Job Scheduler) 分析
- OFBiz开发之异步服务与计划任务(Job Scheduler)
- 使用C#开发计划任务调度服务
- 网站开发进阶(十九)计划任务功能——信息自动弹出
- 使用C#开发计划任务调度服务
- 网站开发进阶(十九)计划任务功能——信息自动弹出
- Android进阶——多线程系列之异步任务AsyncTask的使用与源码分析
- 开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
- linux下启动informix服务-计划任务
- 获益于异步日志服务 Hibernate和JMS开发异步日志服务
- Android开发 AsyncTask异步任务类
- 获益于异步日志服务-使用Hibernate和JMS开发异步日志服务(翻译)
- 使用Spring来实现任务计划服务一:继承java.util.TimerTask
- 使用 Axis2 开发异步 Web 服务
- Asp.net(C#) windows 服务{用于实现计划任务,事件监控等}
- Asp.net(C#) windows 服务{用于实现计划任务,事件监控等}
- 使用Spring来实现任务计划服务三:集成quartz任务调度框架
- 必须使用系统帐户启动任务计划服务
- 使用Spring来实现任务计划服务二:不继承java.util.TimerTask
- C# Windows 开发任务——写定时执行操作的 Windows 服务