服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

在weblogic中使用定时器(commonj timer for weblogic server)

1.简介
  由于j2ee规范的限制,在servlet和ejb中执行用户自定义的多线程并发与定时器服务一直以来是困扰j2ee开发人员的一个大问题。现在commonj项目中的work manager和timer规范将是解决这些问题的一个优秀方法。 
      commonj 定时器(timer)规范提供了一个在servlet和ejb中设置定时器的简单方法,同时允许在servlet和ejb中响应定时器的提醒。该规范提供了一个在不能或者不方便使用java.util.timer环境中使用定时器功能的替代方法。

  现在在weblogic server 9.0中已经提供了对work manager和timer规范的支持,在weblogic server 7和8中需要使用该项功能请参考这里,xcommonj-work。

  关于work manager和timer规范的更多信息请访问这里:timer and work manager for application servers。

      在j2ee中使用 work manager 规范执行并行任务,请访问这里:http://dev2dev.bea.com.cn/techdoc/200508631.html

   commonj定时器的参考请见这里:http://dev2dev.bea.com.cn/techdoc/20051221711.html
2.定时器的使用办法:
(1)在web.xml或者ejb-jar.xml中增加定时器的描述:
 <resource-ref>
    <res-ref-name>timer/mytimer</res-ref-name>
    <res-type>commonj.timers.timermanager</res-type>
    <res-auth>container</res-auth>
    <res-sharing-scope>unshareable</res-sharing-scope>
  </resource-ref>
(2)定义定时器到时间的回调类:
import commonj.timers.*;
public class testlistener
    implements timerlistener
{
    public testlistener()
    {
    }
  
    public void timerexpired(timer timer)
    {
        system.out.println("timerexpired.");
    }
}
(3)在其它任何地方启动定时器,并设置定时器的任务即可实现定时功能了。
       initialcontext ctx = new initialcontext();
            timermanager mgr = (timermanager)ctx.lookup("java:comp/env/timer/mytimer");
            timerlistener listener = new testlistener();
            mgr.schedule(listener,4000);//定时器执行一次
            mgr.scheduleatfixedrate(listener,5000,2000);//定时器周期执行
            //按照日历来执行定时器
            calendar cal = calendar.getinstance();
            cal.set(calendar.hour, 12);
            mgr.schedule(listener, cal.gettime());

扫描关注微信公众号