Tomcat里的java工程是为webservice提供wsdl文件的。打算加个类,没3分钟扫描次数据库发现新数据就通过接口传输。怎么样才能让这个类每3分钟执行一次呢?
解决方案 »
- 请教struts2中的迭代标签iterator问题
- java制作广告系统,记录每一个点击的header信息
- spring 上传问题,请高手帮我看下
- 有关于Eclipse工具的问题?
- 关于struts的<logic:iterate>标签的问题
- 那位大狭能给个openamf+tomcat配置的详细资料。
- 奇怪的乱码问题,大家帮忙看看
- 怎样构建加法计算题验证码?已经有个ASP得~但小弟不会转JSP= ="...标题要长.....
- jsp连接数据库的代码问题??
- 100分求tomcat5.0连接池配置。。。数据库是Sybase 的,在线等待,急!!
- web工程引用另一外部工程问题
- 连接oracle数据库
这个要通过ssh的action才能调用吧?我就是想在tomcat启动后,java工程里面的1个类每3分钟执行一次。
那不是 , 就是上面说的:quartz
如果服务器linux用crontab
如果是windows就用计划任务,让你写的程序去实行。如果一定要写在web的程序一起
写个MAIN的servlet,然后里面写个timer,每3分钟执行你要做的事。
http://blog.csdn.net/dux003/article/details/4237532
这个需要在ssh下用action才行吧?我就想在tomcat启动后,让java工程的某个类每3分钟执行一次。
建议单独写一个非WEB应用做你的工作
看看也许你能用上
<?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);
}}
实现方法:自己写一个线程类,死循环执行一个方法,通过sleep 每三分钟执行一次。
这个线程启动 放在 load-on-start=1 的servlet里。