配置方法:

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("\nname(网络设备名) = " + 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);
} }

jfinal-QuartzPlugin后台任务调度的更多相关文章

  1. Asp.Net Core 轻松学-基于微服务的后台任务调度管理器

    前言     在 Asp.Net Core 中,我们常常使用 System.Threading.Timer 这个定时器去做一些需要长期在后台运行的任务,但是这个定时器在某些场合却不太灵光,而且常常无法 ...

  2. Jfinal QuartzPlugin 简单使用案例

    之前一直使用spring quartz感觉还挺好用的,就想着jfinal是不是也可以使用quartz插件,于是发现了QuartzPlugin和jfinal-scheduler<参考:https: ...

  3. 在后台主机中托管SignalR服务并广播心跳包

    什么是后台主机 在之前的 Asp.NETCore 轻松学系列中,曾经介绍过一个轻量级服务主机 IHostedService ,利用 IHostedService 可以轻松的实现一个系统级别的后台服务, ...

  4. 使用NServiceBus开发分布式应用

    系列主题:基于消息的软件架构模型演变 NServiceBus 是一个.Net平台下开源的消息服务框架,这类产品有时也被称作ESB(Enterprise Service Bus)--企业服务总线.NSe ...

  5. JStorm之Nimbus简介

    本文导读: ——JStorm之Nimbus简介 .简介 .系统框架与原理 .实现逻辑和代码剖析 )Nimbus启动 )Topology提交 )任务调度 )任务监控 .结束语 .参考文献 附:JStor ...

  6. NServiceBus开发

    使用NServiceBus开发分布式应用 系列主题:基于消息的软件架构模型演变 NServiceBus 是一个.Net平台下开源的消息服务框架,这类产品有时也被称作ESB(Enterprise Ser ...

  7. Asp.NETCore轻松学系列阅读指引目录

    前言 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进阶,适合没有 .NETCore 编程经验到小白同学,也适合从 .NET Framework 迁移 ...

  8. RabbitMQ死信队列另类用法之复合死信

    前言 在业务开发过程中,我们常常需要做一些定时任务,这些任务一般用来做监控或者清理任务,比如在订单的业务场景中,用户在创建订单后一段时间内,没有完成支付,系统将自动取消该订单,并将库存返回到商品中,又 ...

  9. 基于.net core微服务(Consul、Ocelot、Docker、App.Metrics+InfluxDB+Grafana、Exceptionless、数据一致性、Jenkins)

    1.微服务简介 一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(RESTfu ...

随机推荐

  1. 使用Code first 进行更新数据库结构(数据迁移)

    CodeFirst 背景  code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会 ...

  2. 【CF】328 D. Super M

    这种图论题已经变得简单了... /* D */ #include <iostream> #include <string> #include <map> #incl ...

  3. Form - CHECKBOX全选功能

    FORM BUILDER开发,遇到这样一个需求: 添加一个CHECKBOX完成全选功能,红框为新添加的CHECKBOX(如图示) Try to use APP_RECORD.FOR_ALL_RECOR ...

  4. ORA-28001: the password has expired

    大早上正式库提示: Oracle提示错误消息ORA-28001: the password has expired 解决办法: 1.利用SYSDBA权限登陆: 2.查看账户信息:select user ...

  5. 存储过程中“Select Top 变量”的问题如何解决

    在SqlServer2005中,可以这样: DECLARE @p int SELECT TOP (@p) * FROM 表名 在SqlServer2000中,不支持以上方法,可以这样: DECLARE ...

  6. PHP imdb类多个跨站脚本漏洞

    漏洞版本: PHP imdb Classes 2-2.1.5 漏洞描述: BUGTRAQ ID: 64542 PHP是一种HTML内嵌式的语言. PHP imdb类2-2.1.5及其他版本在实现上存在 ...

  7. Com和DCOM

    COM,DCOM原理及应用 1.DCOM COM的进程透明特性表现在组件对象和客户程序即可以拥有各自的进程空间,也可以共享同一个进程空间,COM负责把客户的调用正确传到组件对象中,并保证参数传递的正确 ...

  8. apache虚拟主机的设置

    方法一: 首先打开apache中conf下的http.conf文件打开虚拟主机的注释:如下去掉第二行前面的#即可 # Virtual hosts# Include conf/extra/httpd-v ...

  9. 【转】Ubuntu下配置支持Windows访问的samba共享

    原文网址:http://blog.csdn.net/i_chips/article/details/19191957 一.安装Ubuntu samba服务器 $ sudo apt-get instal ...

  10. jquery插件colortip(tooltip类型)

    效果预览:http://demo.tutorialzine.com/2010/07/colortips-jquery-tooltip-plugin/colortips.html 源代码下载:http: ...