亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? loggingjobhistoryplugin.java

?? Java中非常實(shí)用流控制工具
?? JAVA
字號(hào):
/*  * Copyright 2004-2005 OpenSymphony  *  * Licensed under the Apache License, Version 2.0 (the "License"); you may not  * use this file except in compliance with the License. You may obtain a copy  * of the License at  *  *   http://www.apache.org/licenses/LICENSE-2.0  *    * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the  * License for the specific language governing permissions and limitations  * under the License. *  *//* * Previously Copyright (c) 2001-2004 James House */package org.quartz.plugins.history;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.Trigger;import org.quartz.JobListener;import org.quartz.spi.SchedulerPlugin;import java.text.MessageFormat;/** * Logs a history of all job executions (and execution vetos) via the  * Jakarta Commons-Logging framework. *  * <p> * The logged message is customizable by setting one of the following message * properties to a String that conforms to the syntax of <code>java.util.MessageFormat</code>. * </p> *  * <p> * JobToBeFiredMessage - available message data are: <table> * <tr> * <th>Element</th> * <th>Data Type</th> * <th>Description</th> * </tr> * <tr> * <td>0</td> * <td>String</td> * <td>The Job's Name.</td> * </tr> * <tr> * <td>1</td> * <td>String</td> * <td>The Job's Group.</td> * </tr> * <tr> * <td>2</td> * <td>Date</td> * <td>The current time.</td> * </tr> * <tr> * <td>3</td> * <td>String</td> * <td>The Trigger's name.</td> * </tr> * <tr> * <td>4</td> * <td>String</td> * <td>The Triggers's group.</td> * </tr> * <tr> * <td>5</td> * <td>Date</td> * <td>The scheduled fire time.</td> * </tr> * <tr> * <td>6</td> * <td>Date</td> * <td>The next scheduled fire time.</td> * </tr> * <tr> * <td>7</td> * <td>Integer</td> * <td>The re-fire count from the JobExecutionContext.</td> * </tr> * </table> *  * The default message text is <i>"Job {1}.{0} fired (by trigger {4}.{3}) at: * {2, date, HH:mm:ss MM/dd/yyyy}"</i> * </p> *  *  * <p> * JobSuccessMessage - available message data are: <table> * <tr> * <th>Element</th> * <th>Data Type</th> * <th>Description</th> * </tr> * <tr> * <td>0</td> * <td>String</td> * <td>The Job's Name.</td> * </tr> * <tr> * <td>1</td> * <td>String</td> * <td>The Job's Group.</td> * </tr> * <tr> * <td>2</td> * <td>Date</td> * <td>The current time.</td> * </tr> * <tr> * <td>3</td> * <td>String</td> * <td>The Trigger's name.</td> * </tr> * <tr> * <td>4</td> * <td>String</td> * <td>The Triggers's group.</td> * </tr> * <tr> * <td>5</td> * <td>Date</td> * <td>The scheduled fire time.</td> * </tr> * <tr> * <td>6</td> * <td>Date</td> * <td>The next scheduled fire time.</td> * </tr> * <tr> * <td>7</td> * <td>Integer</td> * <td>The re-fire count from the JobExecutionContext.</td> * </tr> * <tr> * <td>8</td> * <td>Object</td> * <td>The string value (toString() having been called) of the result (if any)  *      that the Job set on the JobExecutionContext, with on it.  "NULL" if no  *      result was set.</td> * </td> * </tr> * </table> *  * The default message text is <i>"Job {1}.{0} execution complete at {2, date, * HH:mm:ss MM/dd/yyyy} and reports: {8}"</i> * </p> *  * <p> * JobFailedMessage - available message data are: <table> * <tr> * <th>Element</th> * <th>Data Type</th> * <th>Description</th> * </tr> * <tr> * <td>0</td> * <td>String</td> * <td>The Job's Name.</td> * </tr> * <tr> * <td>1</td> * <td>String</td> * <td>The Job's Group.</td> * </tr> * <tr> * <td>2</td> * <td>Date</td> * <td>The current time.</td> * </tr> * <tr> * <td>3</td> * <td>String</td> * <td>The Trigger's name.</td> * </tr> * <tr> * <td>4</td> * <td>String</td> * <td>The Triggers's group.</td> * </tr> * <tr> * <td>5</td> * <td>Date</td> * <td>The scheduled fire time.</td> * </tr> * <tr> * <td>6</td> * <td>Date</td> * <td>The next scheduled fire time.</td> * </tr> * <tr> * <td>7</td> * <td>Integer</td> * <td>The re-fire count from the JobExecutionContext.</td> * </tr> * <tr> * <td>8</td> * <td>String</td> * <td>The message from the thrown JobExecution Exception. * </td> * </tr> * </table> *  * The default message text is <i>"Job {1}.{0} execution failed at {2, date, * HH:mm:ss MM/dd/yyyy} and reports: {8}"</i> * </p> *  *  * <p> * JobWasVetoedMessage - available message data are: <table> * <tr> * <th>Element</th> * <th>Data Type</th> * <th>Description</th> * </tr> * <tr> * <td>0</td> * <td>String</td> * <td>The Job's Name.</td> * </tr> * <tr> * <td>1</td> * <td>String</td> * <td>The Job's Group.</td> * </tr> * <tr> * <td>2</td> * <td>Date</td> * <td>The current time.</td> * </tr> * <tr> * <td>3</td> * <td>String</td> * <td>The Trigger's name.</td> * </tr> * <tr> * <td>4</td> * <td>String</td> * <td>The Triggers's group.</td> * </tr> * <tr> * <td>5</td> * <td>Date</td> * <td>The scheduled fire time.</td> * </tr> * <tr> * <td>6</td> * <td>Date</td> * <td>The next scheduled fire time.</td> * </tr> * <tr> * <td>7</td> * <td>Integer</td> * <td>The re-fire count from the JobExecutionContext.</td> * </tr> * </table> *  * The default message text is <i>"Job {1}.{0} was vetoed.  It was to be fired  * (by trigger {4}.{3}) at: {2, date, HH:mm:ss MM/dd/yyyy}"</i> * </p> *  *  * @author James House */public class LoggingJobHistoryPlugin implements SchedulerPlugin, JobListener {    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Data members.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    private String name;    private String jobToBeFiredMessage = "Job {1}.{0} fired (by trigger {4}.{3}) at: {2, date, HH:mm:ss MM/dd/yyyy}";        private String jobSuccessMessage = "Job {1}.{0} execution complete at {2, date, HH:mm:ss MM/dd/yyyy} and reports: {8}";    private String jobFailedMessage = "Job {1}.{0} execution failed at {2, date, HH:mm:ss MM/dd/yyyy} and reports: {8}";    private String jobWasVetoedMessage = "Job {1}.{0} was vetoed.  It was to be fired (by trigger {4}.{3}) at: {2, date, HH:mm:ss MM/dd/yyyy}";    private final Log log = LogFactory.getLog(getClass());    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Constructors.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    public LoggingJobHistoryPlugin() {    }    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * Interface.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    protected Log getLog() {        return log;    }    /**     * Get the message that is logged when a Job successfully completes its      * execution.     */    public String getJobSuccessMessage() {        return jobSuccessMessage;    }    /**     * Get the message that is logged when a Job fails its      * execution.     */    public String getJobFailedMessage() {        return jobFailedMessage;    }    /**     * Get the message that is logged when a Job is about to execute.     */    public String getJobToBeFiredMessage() {        return jobToBeFiredMessage;    }    /**     * Set the message that is logged when a Job successfully completes its      * execution.     *      * @param jobSuccessMessage     *          String in java.text.MessageFormat syntax.     */    public void setJobSuccessMessage(String jobSuccessMessage) {        this.jobSuccessMessage = jobSuccessMessage;    }    /**     * Set the message that is logged when a Job fails its      * execution.     *      * @param jobFailedMessage     *          String in java.text.MessageFormat syntax.     */    public void setJobFailedMessage(String jobFailedMessage) {        this.jobFailedMessage = jobFailedMessage;    }    /**     * Set the message that is logged when a Job is about to execute.     *      * @param jobToBeFiredMessage     *          String in java.text.MessageFormat syntax.     */    public void setJobToBeFiredMessage(String jobToBeFiredMessage) {        this.jobToBeFiredMessage = jobToBeFiredMessage;    }    /**     * Get the message that is logged when a Job execution is vetoed by a     * trigger listener.     */    public String getJobWasVetoedMessage() {        return jobWasVetoedMessage;    }    /**     * Set the message that is logged when a Job execution is vetoed by a     * trigger listener.     *      * @param jobWasVetoedMessage     *          String in java.text.MessageFormat syntax.     */    public void setJobWasVetoedMessage(String jobWasVetoedMessage) {        this.jobWasVetoedMessage = jobWasVetoedMessage;    }    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * SchedulerPlugin Interface.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    /**     * <p>     * Called during creation of the <code>Scheduler</code> in order to give     * the <code>SchedulerPlugin</code> a chance to initialize.     * </p>     *      * @throws SchedulerConfigException     *           if there is an error initializing.     */    public void initialize(String name, Scheduler scheduler)        throws SchedulerException {        this.name = name;        scheduler.addGlobalJobListener(this);    }    public void start() {        // do nothing...    }    /**     * <p>     * Called in order to inform the <code>SchedulerPlugin</code> that it     * should free up all of it's resources because the scheduler is shutting     * down.     * </p>     */    public void shutdown() {        // nothing to do...    }    /*     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     *      * JobListener Interface.     *      * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     */    /*     * Object[] arguments = { new Integer(7), new     * Date(System.currentTimeMillis()), "a disturbance in the Force" };     *      * String result = MessageFormat.format( "At {1,time} on {1,date}, there     * was {2} on planet {0,number,integer}.", arguments);     */    public String getName() {        return name;    }    /**      * @see org.quartz.JobListener#jobToBeExecuted(JobExecutionContext)     */    public void jobToBeExecuted(JobExecutionContext context) {        if (!getLog().isInfoEnabled()) {            return;        }                 Trigger trigger = context.getTrigger();        Object[] args = {            context.getJobDetail().getName(),            context.getJobDetail().getGroup(), new java.util.Date(),            trigger.getName(), trigger.getGroup(),            trigger.getPreviousFireTime(), trigger.getNextFireTime(),            new Integer(context.getRefireCount())        };        getLog().info(MessageFormat.format(getJobToBeFiredMessage(), args));    }        /**      * @see org.quartz.JobListener#jobWasExecuted(JobExecutionContext, JobExecutionException)     */    public void jobWasExecuted(JobExecutionContext context,            JobExecutionException jobException) {        Trigger trigger = context.getTrigger();                Object[] args = null;                if (jobException != null) {            if (!getLog().isWarnEnabled()) {                return;            }                         String errMsg = jobException.getMessage();            args =                 new Object[] {                    context.getJobDetail().getName(),                    context.getJobDetail().getGroup(), new java.util.Date(),                    trigger.getName(), trigger.getGroup(),                    trigger.getPreviousFireTime(), trigger.getNextFireTime(),                    new Integer(context.getRefireCount()), errMsg                };                        getLog().warn(MessageFormat.format(getJobFailedMessage(), args), jobException);         } else {            if (!getLog().isInfoEnabled()) {                return;            }                         String result = String.valueOf(context.getResult());            args =                new Object[] {                    context.getJobDetail().getName(),                    context.getJobDetail().getGroup(), new java.util.Date(),                    trigger.getName(), trigger.getGroup(),                    trigger.getPreviousFireTime(), trigger.getNextFireTime(),                    new Integer(context.getRefireCount()), result                };                        getLog().info(MessageFormat.format(getJobSuccessMessage(), args));        }    }    /**      * @see org.quartz.JobListener#jobExecutionVetoed(org.quartz.JobExecutionContext)     */    public void jobExecutionVetoed(JobExecutionContext context) {                if (!getLog().isInfoEnabled()) {            return;        }                 Trigger trigger = context.getTrigger();        Object[] args = {            context.getJobDetail().getName(),            context.getJobDetail().getGroup(), new java.util.Date(),            trigger.getName(), trigger.getGroup(),            trigger.getPreviousFireTime(), trigger.getNextFireTime(),            new Integer(context.getRefireCount())        };        getLog().info(MessageFormat.format(getJobWasVetoedMessage(), args));    }}// EOF

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品免费**视频| 欧洲一区二区av| 久久精品国产一区二区三区免费看 | 色94色欧美sute亚洲线路一久| 国产综合一区二区| 国产一区二区三区在线观看免费视频 | 成人免费福利片| 盗摄精品av一区二区三区| 国产成人免费视频| 成人国产精品视频| 亚洲精品在线免费播放| 精品久久人人做人人爱| 久久久青草青青国产亚洲免观| 久久久久久影视| 国产精品天美传媒沈樵| 国产精品大尺度| 一区二区日韩av| 日韩精品福利网| 久久99深爱久久99精品| 国产精品 欧美精品| 成人久久18免费网站麻豆| 99在线精品视频| 欧美三级资源在线| 日韩一级高清毛片| 日本一区二区成人| 亚洲综合成人在线视频| 日韩电影在线一区| 国产.精品.日韩.另类.中文.在线.播放| 精品一区二区三区免费观看| 免费欧美在线视频| 国产一区二区三区精品视频| 99久久精品国产一区二区三区| 日本道精品一区二区三区| 欧美日韩国产电影| 精品国产一二三| 亚洲欧美激情视频在线观看一区二区三区 | 日本丰满少妇一区二区三区| 欧美色区777第一页| 日韩免费视频一区| 中文字幕亚洲视频| 日韩福利电影在线| 成人一二三区视频| 欧美日韩国产综合一区二区三区| 久久亚洲欧美国产精品乐播| 亚洲精品免费一二三区| 日本不卡视频在线观看| 国产91精品露脸国语对白| 欧美三级电影精品| 中文字幕av免费专区久久| 亚洲成人午夜电影| 国产xxx精品视频大全| 欧美精品日韩一区| 国产精品麻豆视频| 麻豆国产精品777777在线| 99精品桃花视频在线观看| 日韩欧美国产成人一区二区| 亚洲欧美日韩系列| 国产在线麻豆精品观看| 欧美午夜一区二区三区| 国产色91在线| 天天色综合成人网| av午夜一区麻豆| 精品三级av在线| 亚洲午夜精品17c| 床上的激情91.| 日韩精品中文字幕一区二区三区| 亚洲色图丝袜美腿| 国产91露脸合集magnet| 91精品国产91久久久久久最新毛片 | 欧美日韩国产免费一区二区| 国产精品网站在线观看| 久久精品免费看| 精品1区2区3区| 亚洲欧洲日韩一区二区三区| 日韩成人av影视| 在线免费观看日本欧美| 国产精品免费aⅴ片在线观看| 精品一区二区三区在线视频| 3atv一区二区三区| 亚洲成人激情综合网| 91美女蜜桃在线| 亚洲欧洲av在线| 国产成人精品1024| 精品国产一区二区三区久久影院| 亚洲一二三四区不卡| 不卡的电影网站| 日本一区二区动态图| 国产高清精品在线| 久久亚洲捆绑美女| 狠狠色综合日日| 日韩精品一区二区三区视频播放 | 白白色 亚洲乱淫| 久久精品在这里| 国产乱子轮精品视频| 日韩欧美国产不卡| 青青草伊人久久| 7777精品伊人久久久大香线蕉超级流畅| 一本大道久久a久久综合| 日本一区二区三区免费乱视频 | caoporm超碰国产精品| 欧美电影免费观看高清完整版在线观看| 日韩一区二区三区四区五区六区| 一区二区三区在线免费观看| www.日韩在线| 中文字幕亚洲电影| 一本在线高清不卡dvd| 亚洲色欲色欲www| 欧美综合色免费| 亚洲国产日韩综合久久精品| 欧美久久一区二区| 三级在线观看一区二区| 91.xcao| 久久国产综合精品| 久久久久成人黄色影片| 国产精品自拍毛片| 五月婷婷激情综合| 69堂国产成人免费视频| 日韩激情在线观看| 日韩欧美激情四射| 国产成人日日夜夜| 日韩毛片一二三区| 精品视频在线免费看| 日韩精品午夜视频| 久久久不卡影院| 91美女视频网站| 日本午夜一本久久久综合| 久久影院视频免费| 成人精品免费视频| 一区二区三区四区高清精品免费观看 | 波多野洁衣一区| 亚洲最大色网站| 日韩限制级电影在线观看| 国产精品77777| 亚洲免费视频成人| 日韩欧美一级二级三级久久久| 国产精品456| 伊人婷婷欧美激情| 精品久久久久久亚洲综合网| 成人avav影音| 免费欧美在线视频| 中文字幕制服丝袜一区二区三区| 色成年激情久久综合| 日韩av中文字幕一区二区三区 | 久久激情综合网| 日韩一区在线免费观看| 91精品国产综合久久久久| 国产精一区二区三区| 一区二区激情视频| 欧美xxxx老人做受| 91福利在线看| 国产精品一二三四五| 一个色在线综合| 久久久夜色精品亚洲| 欧美三级日韩三级国产三级| 国产精品香蕉一区二区三区| 亚洲午夜影视影院在线观看| 久久久久国产精品免费免费搜索| 在线看不卡av| 成人小视频在线| 久99久精品视频免费观看| 亚洲欧美日韩国产综合| 26uuu欧美| 欧美日韩一级视频| 国产99久久久国产精品免费看 | 国产成人免费视频精品含羞草妖精| 一区二区三区日韩欧美精品| 精品成人在线观看| 在线观看日韩电影| 成人在线视频一区二区| 久久精品国产免费看久久精品| 久久女同精品一区二区| 国产在线不卡视频| 日韩女优电影在线观看| 依依成人综合视频| 99re成人在线| 中文天堂在线一区| 日韩美女一区二区三区| 欧美特级限制片免费在线观看| 国产白丝精品91爽爽久久| 久久国产乱子精品免费女| 亚洲一区二区三区四区五区中文| 国产精品黄色在线观看| 久久亚洲一级片| 精品日韩99亚洲| 欧美一区二区三区日韩| 欧美日韩另类国产亚洲欧美一级| 成人黄色av电影| 国产成人精品一区二区三区四区| 久久成人羞羞网站| 日本中文字幕一区| 日韩电影在线免费看| 亚洲日本免费电影| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品亚洲а∨天堂免在线| 免费成人美女在线观看.| 午夜精品久久久久久久久| 亚洲久草在线视频| 国产精品蜜臀在线观看| 中文字幕精品一区二区精品绿巨人 | eeuss影院一区二区三区|