zoukankan      html  css  js  c++  java
  • jfinal-QuartzPlugin后台任务调度

    配置方法:

    1. 在jfinal的Start.java中插件位置配置QuartzPlugin

    /**
         * 配置插件
         */
        public void configPlugin(Plugins me) 
        {
            // 配置druid数据库连接池插件
            String driver = getProperty("driverClass");
            DruidPlugin druidPlugin = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"), driver);
            
            //集成druid的插件
            druidPlugin.addFilter(new StatFilter());
            druidPlugin.setInitialSize(3).setMaxActive(10);        
            WallFilter wall = new WallFilter();
            wall.setDbType("mysql");
            druidPlugin.addFilter(wall);
            me.add(druidPlugin);
            
            // 配置ActiveRecord插件        
            ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
            //显示执行的sql语句
            //arp.setShowSql(true);        
            me.add(arp);
    //    
    //        // 映射表到模型
    //        arp.addMapping("t_sys_loginperson", Loginperson.class);        
    //        arp.addMapping("t_sys_login", Login.class);
    //        arp.addMapping("t_sys_organization", Organization.class);
    //        arp.addMapping("t_sys_person", Person.class);
    //        
    //        arp.addMapping("t_sys_role", Role.class);
    //        arp.addMapping("t_sys_role_menu", RoleMenu.class);
            
            QuartzPlugin quartzPlugin =  new QuartzPlugin("job.properties");
            me.add(quartzPlugin);
        }    

    2. src目录下增加配置文件"job.properties",时间的格式请参照这里

    a.job=com.dsideal.Util.JobA
    a.cron=*/3 * * * * ?
    a.enable=true

    3. 需要引入的jar包包括 quartz-1.8.6.jar jfinal-ext-3.0.1.jar google-collect-1.0.jar,下载地址

    4. JobA的代码如下,这里我加入了自己的业务逻辑,大家只需要把execute()里的方法改一下就行

    package com.dsideal.Util;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.hyperic.sigar.NetInterfaceConfig;
    import org.hyperic.sigar.NetInterfaceStat;
    import org.hyperic.sigar.Sigar;
    import org.hyperic.sigar.SigarException;
    import org.hyperic.sigar.SigarNotImplementedException;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    import com.jfinal.plugin.memcached.MemcachedKit;
    
    
    
    
    public class JobA implements Job {
        private static long dfRxBytes = 0;
        private static long dfTxBytes = 0;
        public static long dfRxBytesMb = 0; //每秒接收的总字节数
        public static long dfTxBytesMb = 0; //每秒发送的总字节数
        static int callTime = 0;
    
    
        @Override
        public void execute(JobExecutionContext arg0) throws JobExecutionException {
            testNetIfList();
            callTime++;
            System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " JobA works,callTime is: " + callTime);
        }
    
        public void testNetIfList()  {  
            try {
                Sigar sigar = new Sigar();  
                String ifNames[] = sigar.getNetInterfaceList();  
                for (int i = 0; i < ifNames.length; i++) {  
                    String name = ifNames[i];  
                    if(name.equals("eth6")) {
                        NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);  
    //                    print("
    name(网络设备名) = " + name);// 网络设备名  
    //                    print("Address(IP地址) = " + ifconfig.getAddress());// IP地址  
    //                    print("Netmask(子网掩码) = " + ifconfig.getNetmask());// 子网掩码  
                        if ((ifconfig.getFlags() & 1L) <= 0L) {  
    //                        print("!IFF_UP...skipping getNetInterfaceStat");  
                            continue;  
                        }  
                        try {  
                            NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);  
    //                        print("RxPackets(接收的总包裹数) = " + ifstat.getRxPackets());// 接收的总包裹数  
    //                        print("TxPackets(发送的总包裹数) = " + ifstat.getTxPackets());// 发送的总包裹数 
                            if (dfRxBytes == 0) {
                                dfRxBytes = ifstat.getRxBytes();
                            }
    //                        print("RxBytes(接收到的总字节数) = " + ifstat.getRxBytes());// 接收到的总字节数  
    //                        print("-------------------------------------------");
    //                        print("RxBytes(每秒接收到的总字节数) = " + (ifstat.getRxBytes() - dfRxBytes) + "B");// 接收到的总字节数  
    //                        print("RxBytes(每秒接收到的总字节数) = " + ((ifstat.getRxBytes() - dfRxBytes) /1024) + "KB");// 接收到的总字节数  
                            dfRxBytesMb = (ifstat.getRxBytes() - dfRxBytes) /1024 /1024;
    //                        print("RxBytes(每秒接收到的总字节数) = " + dfRxBytesMb + "MB");// 接收到的总字节数  
    //                        print("-------------------------------------------");
                            dfRxBytes = ifstat.getRxBytes();
    //                        print("TxBytes(发送的总字节数) = " + ifstat.getTxBytes());// 发送的总字节数  
    //                        print("-------------------------------------------");
    //                        print("TxBytes(每秒发送的总字节数) = " + (ifstat.getTxBytes() - dfTxBytes) + "B");// 发送的总字节数    
    //                        print("TxBytes(每秒发送的总字节数) = " + ((ifstat.getTxBytes() - dfTxBytes) /1024) + "KB");// 发送的总字节数    
                            if (dfTxBytes != 0) {
                                 dfTxBytesMb = (ifstat.getTxBytes() - dfTxBytes) /1024 /1024 ;
                                 MemcachedKit.set("dfTxBytesMb", 0, dfTxBytesMb);
                                 System.out.println("dfTxBytesMb="+MemcachedKit.get("dfTxBytesMb"));
                            }
    //                        print("TxBytes(每秒发送的总字节数) = " + dfTxBytesMb + "MB");// 发送的总字节数   
    //                        print("-------------------------------------------");
    //                        if (((ifstat.getTxBytes() - dfTxBytes) /1024 /1024) <= 8) {
    //                            this.printA();
    //                        } else {
    //                            this.printB();
    //                        }
                            dfTxBytes = ifstat.getTxBytes();
    //                        print("RxErrors(接收到的错误包数) = " + ifstat.getRxErrors());// 接收到的错误包数  
    //                        print("TxErrors(发送数据包时的错误数) = " + ifstat.getTxErrors());// 发送数据包时的错误数  
    //                        print("RxDropped(接收时丢弃的包数) = " + ifstat.getRxDropped());// 接收时丢弃的包数  
    //                        print("TxDropped(发送时丢弃的包数) = " + ifstat.getTxDropped());// 发送时丢弃的包数  
                        } catch (SigarNotImplementedException e) {  
                             print(e.getMessage());  
                        } catch (SigarException e) {  
                            print(e.getMessage());  
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }  
            } catch (Exception e) {
                // TODO: handle exception
            }
            
        }
        
        void print(String msg) {  
            System.out.println(msg);  
        }
    
    }
  • 相关阅读:
    毕业设计进度5(2月5日)
    毕业设计进度4(2月4日)
    Intellij IDEA 安装Scala插件 + 创建Scala项目
    中国HBase技术社区第一届Meetup资料大合集
    【大会PPT+直播回顾】HBaseCon亚洲2018峰会
    Java 中的锁原理、锁优化、CAS、AQS 详解!
    Reactor 反应堆设计模式
    IO模型
    浅析Reactor设计模式
    将IDEA工程代码提交到Github
  • 原文地址:https://www.cnblogs.com/cczhoufeng/p/3520182.html
Copyright © 2011-2022 走看看