日期:2014-05-17  浏览次数:20720 次

当Tomcat启动时,怎么让它每隔3分钟就执行一个java工程里的类一次?
在另一个帖子里大家说用Quartz,研究了一下好像不是我要的东东。

我的Tomcat里的server.xml配置了1个java工程的路径“D:\project\Interface\WebRoot”,如下所示。现在Tomcat启动后,实现1个webservice接口,就是别人可以通过wsdl调用我java工程里的方法。那我怎么在这个java工程里加个类,才能每隔3分钟就执行这个类呢(这个类是调用别人webservice的客户端)?

XML code

  <!-- Define the Tomcat Stand-Alone Service -->
  <Service name="Catalina">
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
      <Context path="/Project_name" docBase="D:\project\Interface\WebRoot" debug="0" reloadable="false" />
      </Host>
    </Engine>



------解决方案--------------------
http://wenku.baidu.com/view/1e10172ce2bd960590c677f8.html这里有。定义一个定时器然后web.xml配置就ok啦
------解决方案--------------------
自己写一个servlet类,在servlet的init方法里写个定时器每隔三分钟执行你的类即可

Java code
Timer timer = new Timer();
        timer.schedule(new TimerTask(){
            @Override
            public void run() {
                // TODO Auto-generated method stub
                //执行你的任务类
            }
        }, new Date(), 3000);//间隔3秒执行一次定时器任务

------解决方案--------------------
在web.xml配置一个servlet设置启动顺序优先级高些(说白了就是web服务启动时调用这个类)
<servlet> 
<servlet-name>t1</servlet-name> 
<servlet-class>com.base.test.T1</servlet-class> 
<!-- 如果需要自动加载,加下面一句 --> 
<load-on-startup>1</load-on-startup> 
</servlet> 

在这个T1类中的初始化方法ini中写一个Timer类,按shcedule 定时去执行那个业务方法即可。

------解决方案--------------------
或者直接写个监听器类也一样。listener 
一样在web.xml配置,listener类可在web启动时自动加载。不要配loader参数