quartz 中JobExecutionContext的使用
来源:互联网 发布:陈怡馨被迷 知乎 编辑:程序博客网 时间:2024/06/06 02:36
假如execute方法中需要一些额外的数据怎么办?比如说execute
中希望发送一封邮件,但是我需要知道邮件的发送者、接收者等信息?
存在两种解决方案:
1.JobDataMap类:
每个JobDetail都关联了一个JobDataMap实例,JobDataMap是java.util.Map的子类,基本上是提供key- value形式的数据,并提供了一些便利方法(主要是对java基本数据类型的支持,如put(String key,int value)),当开发人员创建JobDetail的时候,可以把附加信息放到JobDataMap中,那么在execute方法中可以根据key找到需 要的值。
JobDetail job = new JobDetail....
job.getJobDataMap().put("from","snowway@vip.sina.com");
...
在execute中
String from = jobExecutionContext.getJobDetail().getJobDataMap().getString("from");
....
不过,当你使用数据库存储JobDetail的时候(默认情况下使用RAM),这里有一个致命的弱点,你不能把没有实现 java.io.Serializable的对象放入JobDataMap中,因为Quartz将使用Blob字段保存(也可以通过配置文件关闭)序列化 过的JobDataMap中的对象。比如你在execute方法中需要一个java.sql.Connection接口实例,这种情况也是普遍的,那么通 常情况下你不能把Connection放入JobDataMap,即使你只想在execute中使用。(注:读者可暂时认为上面这段话是正确的,然而可以 通过指示quartz改变这种行为,那属于高级话题)
2.假如你需要一个java.sql.Connection,用于在execute中完成某些操作,那么你可以把Connection放入Quartz的 SchedulerContext中,execute也可以访问,并且Quartz不会持久化SchedulerContext中的任何东西。
scheduler.getContext().put("java.sql.Connection",connection);
execute中
Connection con = (Connection)jobExecutionContext.getScheduler().getContext().get("java.sql.Connection");
- quartz 中JobExecutionContext的使用
- quartz 中JobExecutionContext的使用
- quartz 中JobExecutionContext的使用
- quartz 中JobExecutionContext的使用
- quartz 中JobExecutionContext的使用
- quartz的JobExecutionContext 使用
- Spring中quartz的使用
- Spring中使用Quartz的配置步骤
- spring中quartz定时器的使用
- Spring中Quartz的配置使用
- Spring中Quartz调度器的使用
- Spring中Quartz调度器的使用
- Quartz中关于cronExpression的使用过程
- Spring中Quartz调度器的使用
- Spring中Quartz调度器的使用
- Spring中quartz定时器的使用
- Spring中Quartz调度器的使用
- Spring中Quartz定时器的使用
- webpack中的loader的配置
- Jenkins进阶系列之——05FTP publisher plugin插件
- Jar(For Java)命令的使用
- Android设计模式-抽象工厂模式
- session原理及实现共享
- quartz 中JobExecutionContext的使用
- Extract Method 提炼函数
- Jenkins进阶系列之——06FTP publisher plugin插件下载(支持绝对路径)
- 好玩的API调用之---天气预报的API调用与爬虫
- Jav中使用UDP通信时绑定端口
- JavaScript设计模式(二) 惰性模式
- Jenkins进阶系列之——07更改Jenkins的主目录
- kalman滤波
- Linux使用笔记3-crontab添加定时任务