当前位置: 代码迷 >> Java Web开发 >> 当Tomcat启动时,如何让它每隔3分钟就执行一个java工程里的类一次
  详细解决方案

当Tomcat启动时,如何让它每隔3分钟就执行一个java工程里的类一次

热度:9231   发布时间:2013-02-25 21:11:48.0
当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这里有。定义一个定时器然后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参数
  相关解决方案