-
ssh + mysql + quartz5
我有一个方法,方法为addUser(int id),而且这个方法同时带有一个参数,当用户登录系统后,就调用这个方法,触发这个方法之后每隔5分钟就自动调用这个方法,直到这个用户退出系统(特别声明的是这个方法每隔5分钟就执行一次,但是不能够影响到其它的操作),想问大家一下如果要想使用quartz来完成这样的功能,我应该怎么来实现啊??如果不使用quartz来完成,那有没有更好的方法能够完成我这个功能啊??谢谢大家了!!
问题补充:songfantasy 写道我之前总结的东东,看看能不能用上吧。
首先感谢你给我的回答,这样好像不能满足我的要求,我自己写了一个,可是在运行时总是报一个空指针异常,不知道是为什么??
我代码如下:
java代码:
public class UserTagImpl implements UserTagService, Job {
private TUserTagDAO userTagDao = new TUserTagDAO();
private TUserDynamicsDAO userDynamicsDao = new TUserDynamicsDAO();
private TObjectDAO objectDao = new TObjectDAO();
private TUserObjectsDAO userObjectsDao = new TUserObjectsDAO();
private TObjectSubscriberDAO objectSubscriberDao = null;
private TObjectTagDAO objectTagDao = new TObjectTagDAO();
public void execute(JobExecutionContext context)
throws JobExecutionException {
try {
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String userid = dataMap.getString("userid");
System.out.println(userid + "aa");
this.addUserObjectAndObject(Integer.parseInt(userid));
} catch (Exception e) {
e.printStackTrace();
}
}}
本来开始时依赖注入的,可是总是报空指针异常,所以我就弄成了实例化
在action中的代码:
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
List list = this.userService.userLogin(userForm.getUser());
TUser user = null;
for (int i = 0; i < list.size(); i++) {
user = (TUser) list.get(i);
}
System.out.println(list.size());
if (user != null) {
//完成商品的推送的功能
try {
startClock(user.getUId()+"");
} catch (Exception e) {
e.printStackTrace();
}
}
return mapping.findForward("success");
}
private void startClock(String userid) throws Exception
{
System.out.println("ok");
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date runTime = TriggerUtils.getNextGivenMinuteDate(new Date(), 1);
JobDetail job = new JobDetail(userid,null,UserTagImpl.class);
//CronExpression con = new CronExpression("0 0 5 * * ?");
job.getJobDataMap().put("userid",userid);
//Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
Trigger trigger = new CronTrigger(userid,null,"0 0/1 0/1 * * ?");
//trigger.setName(userid);
sched.scheduleJob(job, trigger);
sched.start();
System.out.println("ok");
System.out.println(userid);
}
}
报错内容为:
java.lang.NullPointerException
at com.smenu.struts.dao.TUserDynamicsDAO.getOneTUserDynamicByUId(TUserDynamicsDAO.java:230)
at com.smenu.struts.impl.UserTagImpl.getOneTUserDynamicByUId(UserTagImpl.java:281)
at com.smenu.struts.impl.UserTagImpl.addUserObjectAndObject(UserTagImpl.java:145)
at com.smenu.struts.impl.UserTagImpl.execute(UserTagImpl.java:299)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
请求大哥帮忙?
问题补充:这个报错的方法应该是不会有问题的,因为我在别的地方还使用了这个方法,所以不知道这是为什么?为什么会出现这样的错误?2010年9月16日 16:46
4个答案 按时间排序 按投票排序
-
B、使用SimpleTriggerBean类只能做简单Job与Job之间的执行周期指定,如果需要在指定时间执行,可以使用CronTriggerBean类。 1、修改ApplicationContext.xml <!-- 在任务的周期指定上,使用cronTriggerBean类来指定。排定Job用SchedulerFactoryBean类。--> <bean id="cronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetailBean"></property> <property name="cronExpression" value="0 37-38 15 * * ?"/> </bean> <bean id="scheduledFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerBean" /> </list> </property> </bean> 注意:CronTriggerBean的cronExpression属性指定格式:至少6个时间元素,上面表示每天的15:37-38分执行1次任务。 时间元素(按照顺序): 秒(0-59): 分(0-59): 小时(0-23): 每月第几天(1-31): 月(1-12或JAN-DEC): 每星期第几天(1-7或SUN-SAT): 年(1970-2099): 其中:不用设置的用”?”. (1) 每月第几天和每星期第几天是互斥的,两个只能设置1个。如果有好几个时间点,可以使用”,”符号,例如:”0 0 10,12,14 * * ?”表示每天的10时,12时,14时执行Job. (2) 对于连续时间可以使用”-”符号。例如:”0 10,12,14 1-15 * ?”表示每月的1到15日10时,12时,14时执行Job. (3) 时间格式的年可以不用制定。例如”0 0 10,12,14 ? MON 2006”表示2006年每星期一的10时,12时,14时执行Job.
2010年9月16日 19:14
-
Spring中整合Quartz A 、简单的Trigger定时任务,功能和Timer一样 1、JobData.java 进行业务逻辑处理的类 public class JobData { public String getData() { //业务逻辑处理 return "我的数据"+ new Date().toString(); } } 2、MyQuartz.java 定义job类 public class MyQuartz extends QuartzJobBean { private JobData jobData; @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println(jobData.getData() +"is executed"); } public JobData getJobData() { return jobData; } public void setJobData(JobData jobData) { this.jobData = jobData; } } 3、 ApplicationContext.xml <!-- use Quartz --> <bean id="jobData" class="com.huawei.esop.JobData"></bean> <bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.huawei.esop.MyQuartz"> </property> <!-- Job所需的数据可以在jobDataAsMap属性中设置 --> <property name="jobDataAsMap"> <map> <entry key="jobData" value-ref="jobData"></entry> </map> </property> </bean> <!-- 在任务的周期指定上,使用SimpleTriggerBean类来指定。排定Job用SchedulerFactoryBean类。--> <bean id="simpleTriggerBean" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="jobDetailBean"></property> <!-- 执行周期 --> <property name="repeatInterval" value="2000"></property> <!-- 开始延时 --> <property name="startDelay" value="1000"></property> </bean> <bean id="scheduledFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTriggerBean" /> </list> </property> </bean> 4、 编写测试类 public class TestQuartzDemo { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml"); System.out.println("启动任务"); Scheduler scheduler= (Scheduler)context.getBean("scheduledFactoryBean"); try { scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } } }
2010年9月16日 19:14
相关推荐
该框架具备一整套完整...quartz 开发环境 :myeclise或者Eclise+Jdk1.6+ MySQL5.6+Tomcate1.7 系统功能 菜单管理、角色管理、系统功能、数据字典、 机构信息、 URL拦截、 用户管理、 日志管理、 代码生成器、 定时任务
7. **任务调度**:使用Quartz或Spring Task进行定时任务,如自动提醒借阅到期的用户。 8. **邮件服务**:集成SMTP发送邮件通知,如注册验证、借阅提醒等。 9. **报表生成**:如使用JasperReports或iText生成统计报告...
wts-core > wts-parameter > wts-report > wts-authority > wts-quartz > wts-doc > wts-exam > wts-tag > wts-web 本系统有54张表,业务逻辑比较复杂 运行环境 jdk7+tomcat7+mysql+IntelliJ IDEA+maven 项目技术...
wts-core > wts-parameter > wts-report > wts-authority > wts-quartz > wts-doc > wts-exam > wts-tag > wts-web 本系统有54张表,业务逻辑比较复杂 运行环境 jdk7+tomcat7+mysql+IntelliJ IDEA+maven 项目...
4. 整合性强:SSH可以与其他开源库无缝集成,如MyBatis、Quartz等。 在"my_ssh"这个压缩包文件中,可能包含了SSH框架的示例代码,如Struts2的配置文件、Spring的bean配置、Hibernate的实体类和映射文件,以及相关的...
在这个项目中,可能采用了Quartz或Spring Task等开源任务调度库,它们允许开发者根据预设的时间规则启动任务,提高了系统的自动化程度。 3. **数据库管理**:数据库用于存储任务信息、执行历史、用户权限等数据。...
5. **数据库**:项目包含了一个数据库,可能是MySQL或Oracle等关系型数据库,用于存储任务信息、执行记录等数据。数据库设计应考虑到数据的一致性、完整性和安全性,可能包含任务表、用户表、日志表等多个实体。 6....
在实际应用中,可能还需要添加其他的中间件或服务,如Spring Security进行权限控制,或Quartz进行定时任务调度。 总的来说,SSH整合是一个复杂的工程,需要深入理解各框架的工作原理和配置方式。这个压缩包提供的...
spring + springmvc + hibernate + mysql + redis 项目结构 ├── titan_core // 封装核心框架 ├── titan_crawler // 网页爬虫 ├── titan_monitor // 系统监控 ├── titan_quartz // 定时任务 ├── titan...
在开发过程中,这些jar包通常会与其他必要的库一起使用,例如数据库驱动(如mysql-connector-java.jar)、日志库(如log4j.jar)和Servlet容器API(如servlet-api.jar)。开发者还需要配置相应的XML配置文件,如...
在这个场景下,我们主要关注两个技术栈:SSH框架和数据库系统,包括MySQL和Oracle。 SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中广泛使用的一个开源集成框架。它整合了Spring(负责IoC/DI容器和...
本资源摘要信息中整理了 Java 面试中常见的知识点,涵盖了 Java、Web、数据库(MYSQL、ORACLE)、SSH、SSM 等方面的大部分知识,包括面试官常问的问题。 一、面向对象的特征 面向对象的特征包括封装、继承和多态。...
开发者可能使用了如Java的调度库Quartz来处理任务调度,或者采用Elasticsearch进行大规模数据的搜索和分析。 最后,宿舍管理是一个内部设施管理的应用。它可能包括宿舍分配、维修申请、访客管理等功能,服务于学校...
day14_mysql基础 day15_mysql加强 day16_jdbc基础 day17_jdbc加强 day18_dbutils day19_分页&条件查询 day20_过滤器 day21_监听器 day22_文件上传与下载 day23_基础加强 day24_在线支付&JavaMail; day25_...
这类插件通常利用Spring的TaskExecutor或Quartz等第三方库来实现。 6. **数据库(MySQL)**:MySQL是一个广泛使用的开源关系型数据库管理系统,具有高性能和易用性。在本系统中,它存储了工作流相关的所有数据,如...
这可能涉及到数据库操作,如MySQL,以及Spring Security框架来处理安全相关问题。 2. 财务记录:用于添加、修改、删除和查询收支记录。这一部分可能会用到JDBC进行数据库操作,以及Model-View-Controller(MVC)设计...
他对于Spring全家桶(Spring、SpringMVC、Mybatis、Hibernate、SpringBoot、SpringData)有深入的理解,同时熟悉SSH(Spring+Struts+Hibernate)、SSM(Spring+SpringMVC+Mybatis)、以及SSS(Spring+SpringMVC+...
该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户...
系统依赖于MyEclipse开发环境和MySQL数据库服务,这是Java Web开发的常见组合,方便开发者进行代码编写和数据库操作。管理员可以通过账号"admin"和密码"admin"登录系统进行管理操作,这表明系统预设了一个默认的管理...
AdminStore ...SSH (Spring、SpringMVC、Hibernate) 安全权限 Shiro 缓存 Ehcache 视图模板 freemarker 工作流引擎 activiti 定时任务 quartz AdminLTE bootstrap 搭建步骤 创建数据库。如使用MySQL