当前位置: 代码迷 >> Java Web开发 >> Tomcat里放了一个java工程,如何加个类每3分钟执行一次
  详细解决方案

Tomcat里放了一个java工程,如何加个类每3分钟执行一次

热度:1753   发布时间:2013-02-25 21:11:59.0
Tomcat里放了一个java工程,怎么加个类每3分钟执行一次
Tomcat里的java工程是为webservice提供wsdl文件的。打算加个类,没3分钟扫描次数据库发现新数据就通过接口传输。

怎么样才能让这个类每3分钟执行一次呢?

------解决方案--------------------------------------------------------
楼主搜下java作业调度
------解决方案--------------------------------------------------------
可以用listener或者job,需要在web.xml加个配置,让该类实现listener或者job接口。具体实现可以google搜下,时间有限就不具体写代码了
------解决方案--------------------------------------------------------
定时任务嘛,就是一个,最近用过quartz比较简单,好用,!可以搜下
------解决方案--------------------------------------------------------
一般都是单独写个java程序的,虽然可能放在webserver一个服务器。
如果服务器linux用crontab
如果是windows就用计划任务,让你写的程序去实行。

如果一定要写在web的程序一起
写个MAIN的servlet,然后里面写个timer,每3分钟执行你要做的事。
http://blog.csdn.net/dux003/article/details/4237532
------解决方案--------------------------------------------------------
http://topic.csdn.net/u/20120530/15/9f24ed86-f536-413c-9ab8-c86b931e3bdc
看看也许你能用上
------解决方案--------------------------------------------------------
使用定时器quarty,spring里面配置的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 第一步配置需要定时执行任务的目标bean -->
<bean id="myQuartz" class="com.test.quartz.QuartzService"></bean>

<!-- 第二步,配置具体使用类的哪个方法 -->
<bean id="JobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myQuartz"></property>
<property name="targetMethod" value="print"></property>
<property name="concurrent" value="false"/>
</bean>

<!-- 定义时间间隔触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="JobDetail"></property>
<property name="cronExpression">
<value>* 0/3 * * * ?</value> //每三分钟执行一次
</property>
</bean>
<!-- 启动定时器 -->

<bean id="startJob"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" autowire="no">
<property name="autoStartup" value="true"/>
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>

</beans>


目标bean如下:
package com.test.quartz;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class QuartzService{
private static Log logger = LogFactory.getLog(QuartzService.class);
public void print(){
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time = format.format(date);
logger.info(time);
}

}

------解决方案--------------------------------------------------------
quartz或者自己写个Timer
------解决方案--------------------------------------------------------
写个定时器吧。呵呵17楼正解。要不写个线程。
  相关解决方案