0 0

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个答案 按时间排序 按投票排序

0 0

我之前总结的东东,看看能不能用上吧。

2010年9月16日 19:15
0 0

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
0 0

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
0 0

JDK中的TimeTask和Timer应该可以满足你的要求。

2010年9月16日 17:31

相关推荐

    基于ssh+layui的java快速开发框架源码.rar

    该框架具备一整套完整...quartz 开发环境 :myeclise或者Eclise+Jdk1.6+ MySQL5.6+Tomcate1.7 系统功能 菜单管理、角色管理、系统功能、数据字典、 机构信息、 URL拦截、 用户管理、 日志管理、 代码生成器、 定时任务

    综合spring mvc + spring + hibernate + bootstrap开发图书管理系统

    7. **任务调度**:使用Quartz或Spring Task进行定时任务,如自动提醒借阅到期的用户。 8. **邮件服务**:集成SMTP发送邮件通知,如注册验证、借阅提醒等。 9. **报表生成**:如使用JasperReports或iText生成统计报告...

    ssh开发在线问卷答题系统,maven多模块搭建,用于java毕设

    wts-core &gt; wts-parameter &gt; wts-report &gt; wts-authority &gt; wts-quartz &gt; wts-doc &gt; wts-exam &gt; wts-tag &gt; wts-web 本系统有54张表,业务逻辑比较复杂 运行环境 jdk7+tomcat7+mysql+IntelliJ IDEA+maven 项目技术...

    ssh开发在线问卷答题系统,maven多模块搭建

    wts-core &gt; wts-parameter &gt; wts-report &gt; wts-authority &gt; wts-quartz &gt; wts-doc &gt; wts-exam &gt; wts-tag &gt; wts-web 本系统有54张表,业务逻辑比较复杂 运行环境 jdk7+tomcat7+mysql+IntelliJ IDEA+maven 项目...

    ssh实例简单demo

    4. 整合性强:SSH可以与其他开源库无缝集成,如MyBatis、Quartz等。 在"my_ssh"这个压缩包文件中,可能包含了SSH框架的示例代码,如Struts2的配置文件、Spring的bean配置、Hibernate的实体类和映射文件,以及相关的...

    基于ssh的任务调度系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+辅导视频).zip

    在这个项目中,可能采用了Quartz或Spring Task等开源任务调度库,它们允许开发者根据预设的时间规则启动任务,提高了系统的自动化程度。 3. **数据库管理**:数据库用于存储任务信息、执行历史、用户权限等数据。...

    基于ssh的任务调度系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频).zip

    5. **数据库**:项目包含了一个数据库,可能是MySQL或Oracle等关系型数据库,用于存储任务信息、执行记录等数据。数据库设计应考虑到数据的一致性、完整性和安全性,可能包含任务表、用户表、日志表等多个实体。 6....

    SSH整合所需的jar

    在实际应用中,可能还需要添加其他的中间件或服务,如Spring Security进行权限控制,或Quartz进行定时任务调度。 总的来说,SSH整合是一个复杂的工程,需要深入理解各框架的工作原理和配置方式。这个压缩包提供的...

    titan:一个简单的研究项目

    spring + springmvc + hibernate + mysql + redis 项目结构 ├── titan_core // 封装核心框架 ├── titan_crawler // 网页爬虫 ├── titan_monitor // 系统监控 ├── titan_quartz // 定时任务 ├── titan...

    SSH2框架所用jar包

    在开发过程中,这些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容器和...

    常见面试题整理.docx

    本资源摘要信息中整理了 Java 面试中常见的知识点,涵盖了 Java、Web、数据库(MYSQL、ORACLE)、SSH、SSM 等方面的大部分知识,包括面试官常问的问题。 一、面向对象的特征 面向对象的特征包括封装、继承和多态。...

    电子商城+物流管理+宿舍管理

    开发者可能使用了如Java的调度库Quartz来处理任务调度,或者采用Elasticsearch进行大规模数据的搜索和分析。 最后,宿舍管理是一个内部设施管理的应用。它可能包括宿舍分配、维修申请、访客管理等功能,服务于学校...

    传智播客黑马35期

    day14_mysql基础 day15_mysql加强 day16_jdbc基础 day17_jdbc加强 day18_dbutils day19_分页&条件查询 day20_过滤器 day21_监听器 day22_文件上传与下载 day23_基础加强 day24_在线支付&JavaMail; day25_...

    struts2+spring+hibernate简单的工作流系统

    这类插件通常利用Spring的TaskExecutor或Quartz等第三方库来实现。 6. **数据库(MySQL)**:MySQL是一个广泛使用的开源关系型数据库管理系统,具有高性能和易用性。在本系统中,它存储了工作流相关的所有数据,如...

    java项目之家庭财务管理系统(源码+说明文档+演示视频).zip

    这可能涉及到数据库操作,如MySQL,以及Spring Security框架来处理安全相关问题。 2. 财务记录:用于添加、修改、删除和查询收支记录。这一部分可能会用到JDBC进行数据库操作,以及Model-View-Controller(MVC)设计...

    JavaEE求职简历-姓名-JAVA开发工程师-3年经验.docx

    他对于Spring全家桶(Spring、SpringMVC、Mybatis、Hibernate、SpringBoot、SpringData)有深入的理解,同时熟悉SSH(Spring+Struts+Hibernate)、SSM(Spring+SpringMVC+Mybatis)、以及SSS(Spring+SpringMVC+...

    spring-boot示例项目

    该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户...

    b/s大唐软件管理系统源码(java)

    系统依赖于MyEclipse开发环境和MySQL数据库服务,这是Java Web开发的常见组合,方便开发者进行代码编写和数据库操作。管理员可以通过账号"admin"和密码"admin"登录系统进行管理操作,这表明系统预设了一个默认的管理...

    adminstore:一个简单的项目初始化模板,集成shiro,spring,hibernate,spring mvc,ehcache,disconver,bootstrap。搭建项目时候不错的一个选择!,后台采用AdminLte

    AdminStore ...SSH (Spring、SpringMVC、Hibernate) 安全权限 Shiro 缓存 Ehcache 视图模板 freemarker 工作流引擎 activiti 定时任务 quartz AdminLTE bootstrap 搭建步骤 创建数据库。如使用MySQL

Global site tag (gtag.js) - Google Analytics