Tomcat里的java工程是为webservice提供wsdl文件的。打算加个类,没3分钟扫描次数据库发现新数据就通过接口传输。怎么样才能让这个类每3分钟执行一次呢?

解决方案 »

  1.   

    可以用listener或者job,需要在web.xml加个配置,让该类实现listener或者job接口。具体实现可以google搜下,时间有限就不具体写代码了
      

  2.   

    定时任务嘛,就是一个,最近用过quartz比较简单,好用,!可以搜下
      

  3.   


    这个要通过ssh的action才能调用吧?我就是想在tomcat启动后,java工程里面的1个类每3分钟执行一次。
      

  4.   


    那不是 , 就是上面说的:quartz
      

  5.   

    一般都是单独写个java程序的,虽然可能放在webserver一个服务器。
    如果服务器linux用crontab
    如果是windows就用计划任务,让你写的程序去实行。如果一定要写在web的程序一起
    写个MAIN的servlet,然后里面写个timer,每3分钟执行你要做的事。
    http://blog.csdn.net/dux003/article/details/4237532
      

  6.   


    这个需要在ssh下用action才行吧?我就想在tomcat启动后,让java工程的某个类每3分钟执行一次。
      

  7.   

    用spring的定时器,可以通过XML设置发送的时间间隔。启动时直接加载这个bean,就可以实现
      

  8.   

    java ee规范要求最好在这种工作模式下使用timer
    建议单独写一个非WEB应用做你的工作
      

  9.   

    监听器里加个TIMER咯 扯什么SPRING 没SPRING就干不了事了?
      

  10.   

    http://topic.csdn.net/u/20120530/15/9f24ed86-f536-413c-9ab8-c86b931e3bdc.html
    看看也许你能用上
      

  11.   

    使用定时器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);
    }}
      

  12.   

    可以用quartz, spring带这个包也可以自己实现。
    实现方法:自己写一个线程类,死循环执行一个方法,通过sleep 每三分钟执行一次。
    这个线程启动  放在 load-on-start=1 的servlet里。