`
xiaoming2xiaohong
  • 浏览: 41523 次
社区版块
存档分类
最新评论

一次定时任务

阅读更多


一次定时任务

在我们开发的一个系统中,有定时任务,自然就想到了Quartz,由于框架采用的Spring,Quartz跟Spring的集成也非常简单,所以就把Quartz配置到框架中,当系统启动后,定时任务也就自动启动。在开发的过程中一直没有发现问题,但是最后上线的时候,采用的是weblogic cluster,启动了4个节点,发现有的定时任务执行了不止一次,才恍然大悟,4个节点启动了4个应用,也就启动了4个定时任务,所以在同一个时间定时任务执行了不止一次。去网上搜索,发现Quartz也支持cluster,但是我觉得就我们的系统而言,没有必要采用cluster的定时任务,也许是比较懒吧,就想让定时任务只执行一次。在网上搜到了robbin的一篇文章(http://robbin.iteye.com/blog/40989 ),发现把quartz集中到webapp当中还是有一定的风险,同时同一个时间点执行也不止一次。Robbin的解决办法就是自己单独启动一个Job Server,来quartz跑job,不要部署在web容器中。 我也比较同意这个办法。鉴于时间比较紧,就想有没有比较方便的方法。其实把原来的webapp当做一个quartz的容器就可以了。可以自己写一个线程来跑应用,再写一个command启动这个线程就可以了。线程类很简单,如下:public class StartServer {    public static void main(String[] args) throws Exception {        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "/spring/context-annotation.xml","/spring/context-transaction.xml","/spring/context-hibernate.xml","/spring/context-quartz.xml"});        System.out.println("start server....");        while (true) {            try {                Thread.sleep(900);            } catch (InterruptedException ex) {            }        }    };}去掉了系统的controller配置servlet.xml,运行这个类就可以了。在web-inf目录下写一个command来启动这个java类:setlocal ENABLEDELAYEDEXPANSIONif defined CLASSPATH (set CLASSPATH=%CLASSPATH%;.) else (set CLASSPATH=.)FOR /R .\lib %%G IN (*.jar) DO set CLASSPATH=!CLASSPATH!;%%GEcho The Classpath definition is==== %CLASSPATH%set CLASSPATH=./classes;%CLASSPATH%java com.company.job.StartServer这个command需要把需要的jar(web-inf/lib中)包都放到classpath中。每次启动的时候执行这个command就可以了。跟原来的应用分开了,调试起定时任务也不用影响到原来的应用,还是比较方便的。部署的时候原样拷贝一份,然后执行这个command就好了,部署起来也比较方便。 QQ:24889356

1
4
分享到:
评论

相关推荐

    TimerTask执行每日定时任务

    在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务的调度。这两个类属于`java.util`包,为开发者提供了执行周期性或一次性任务的能力。下面我们将深入探讨如何利用`TimerTask`执行每日定时...

    python定时任务 每天运行一次.md

    python定时任务 每天运行一次 在 Python 中可以使用 schedule 模块来实现定时任务。以下是一个每天运行一次的例子: import schedule import time def job(): print("I'm running at 5:00am every day.") # 设定...

    .net core 定时任务

    .net core 定时执行某一时间的任务,可设置循环的小时,分钟,秒, 资源里只执行了一次定时任务,可循环多次,运行时自动进入方法

    furion内置的定时任务使用学习,动态添加定时任务代码

    在控制器中,我们可以调用Furion提供的API,如`BackgroundJob.Enqueue`来添加一次性任务,或者`CronJob.Enqueue`来创建基于CRON表达式的周期性任务。 `FurionJobStu02.csproj` 是项目文件,它定义了项目的依赖项和...

    python定时任务 每天运行一次

    python定时任务 每天运行一次

    定时任务插件_K3Cloud定时任务插件_

    对于K3Cloud的二次开发者,此插件提供了丰富的API接口,允许自定义任务逻辑,将企业特有的业务流程纳入定时任务体系。开发者可以通过编写脚本或者调用服务接口来实现复杂的任务逻辑,并通过插件进行调度。 3. **...

    java轻松实现—定时任务

    // 每60秒执行一次 } @Override public void contextDestroyed(ServletContextEvent sce) { // 在Web应用关闭时,取消所有任务,防止内存泄漏 Timer timer = (Timer) sce.getServletContext().getAttribute(...

    安卓 开启service每分钟执行一次任务 模拟定时 或者定时任务

    1)Service默认运行在主线程中,IntentService运行在一个新的线程中 2)Service需要主动调用stopSelf()或stopService()服务才可以停止,IntentService运行完后自动停止 使用IntentService需要注意2点: 1)构造函数中...

    简洁的定时任务实例

    一,任务列表(多个定时任务可在task:scheduled-tasks中写多个task:scheduled-task) */5 * * * * ?"/> </task:scheduled-tasks> 二,相对的类和方法 <bean id="myTaskXml" class="test.task"></bean>

    C#实现的自定义定时任务 可定时运行 多任务运行

    总的来说,利用C#实现的自定义定时任务系统,结合多任务管理,可以灵活地处理各种定时任务需求,无论是简单的单次执行还是复杂的周期性操作,都可以轻松应对。通过这样的设计,开发者可以根据自己的业务场景,创建出...

    db2定时任务 使用说明

    其中,“db2定时任务”功能便是DB2为了自动化数据库管理和数据处理流程而设计的一个强大工具。本文将深入解析db2定时任务的使用方法,包括其基本概念、配置步骤、以及如何通过具体实例来理解和应用这一功能。 ### ...

    springboot定时任务的动态开启关闭

    ") // 每5分钟执行一次 public void executeTask() { // 执行任务的逻辑 } } ``` 3. **动态开启和关闭定时任务** 要实现动态开启和关闭定时任务,我们需要利用Spring的`TaskScheduler`接口和`@...

    asp.net定时任务(定时器)

    在这个场景下,我们讨论的是如何在ASP.NET环境中设置一个定时器,使得页面加载或IIS启动后,该定时任务每隔10秒执行一次。 1. **定时任务原理**: ASP.NET定时任务通常基于`System.Threading.Timer`类或者`System....

    springboot动态配置定时任务(schedule)

    例如,以下是一个简单的每分钟执行一次的任务: ```java import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class MyTask { @...

    定时任务启动多线线程示例

    在Java开发中,Spring框架是广泛使用的,它不仅提供了丰富的功能,还支持诸如定时任务和多线程等高级特性。本示例将深入探讨如何在Spring框架中利用定时任务(Spring Task)启动多线程来执行并发操作。 首先,我们...

    python每天定时执行一次任务

    使用Python的timer来完成每天执行一次的定时任务,环境是windows,python3.4

    详解SpringBoot 创建定时任务(配合数据库动态执行)

    "表示每5秒执行一次。 动态定时任务与静态任务不同之处在于,其执行周期不是固定的,而是可以从外部如数据库中获取。这种方式更加灵活,例如,当我们想要改变任务执行频率时,无需重启应用即可生效。在SpringBoot中...

    Spring定时任务实现(非Web项目)

    在Spring框架中,定时任务是通过Spring的Task模块来实现的,这使得在非Web项目中也能方便地进行定时任务的调度。以下是对这个主题的详细讲解。 首先,我们需要了解Spring Task的核心组件: 1. **...

    IntelliJ IDEA中创建Spring boot项目,定时任务测试

    ") // 每5秒执行一次 public void executeTask() { System.out.println("定时任务正在执行..."); // 任务逻辑 } } ``` 3. **配置Spring Task**:如果使用Spring Task,需在主配置类(一般命名为`Application....

    定时任务+案例

    6. **案例分析**:在这个“scheduler”压缩包中,可能包含了一个具体的示例代码,展示了如何使用Java创建一个每15分钟执行一次的定时任务。这可能涉及到创建一个Runnable或Callable接口的实现,然后用`...

Global site tag (gtag.js) - Google Analytics