ghris 2008-09-16 13:06
浏览 201
已采纳

请教大虾如何让web服务器自动运行

我的web项目是用java写的,框架用的是SSH,现在想要让服务器自动运行一段程序但是不知道该怎么办,请哪位高手能帮忙指点一下!!感激不尽!!
我描述一下我想法,现在是2008年9月16日13点05分,我启动tomcat,到15点正的时候我想web服务器自动运行一段程序修改数据库的一张表里的一个字段。

[b]问题补充:[/b]
这个15点正不是事先设置好的 是要从数据库里查出来的
就是定时要到数据库检索一次比对时间 要是当前时间和数据库存储的时间一致才运行修改的程序

  • 写回答

3条回答 默认 最新

  • eyeqq 2008-09-17 08:53
    关注

    既然是SSH,用Quartz解决问题吧。
    下面是引用SpringSide Calvin写的一份文档。
    原地址在这里:[url]http://wiki.springside.org.cn/display/springside/Quartz[/url]
    Quartz 指南
    1. 概述
    Quartz(http://www.opensymphony.com/quartz/)是最常用的定时执行任务框架,可以自行用API设定调度,也可以集成到Spring里面,以配置文件调度POJO文件的方法执行。

    1.1 参考资料
    《Quartz Job Scheduling Framework》 2006年新书,可以Emule得到,很多原来文档不详细的地方如clustering等都可以在里面看到。
    2.与Spring集成
    2.1 Scheduler 总入口
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">






    quartz的详细配置在quartz.properties文件,具体配置见其注释或参考参考文档,一般默认即为JVM嵌入式Scheduler。也可以配置把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行。

    比如定义12点运行任务的,如果12:05运行了一次,然后服务器在12:30重启,如果没有持久化,那还会重新运行一次。

    可惜hsqldb不支持select * from foo for update 这样的行锁定sql语法,无法demo。

    2.2 Trigger


    <!--朝九晚五工作时间内每半小时执行一次-->

    强大的cronTrigger,类似著名的cron表达式,方便我们任意的job控制的想法。

    当然quartz也有简单的simpleTrigger,实现的东西就和jdk中的timer差不多了,另还有好几个其他的timer。详细请参考quartz 的文档。

    2.3 POJO式定义
    Spring中与quartz 的结合方式有两种,一种是以quartz本身的一些特性,没有很好的体现springside的一切都是pojo宗旨,这里暂且不谈,而springside中实现的是以pojo为job的一种做法,大致的配置如下:

    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="bookStockChecker"/>
        <property name="targetMethod" value="check"/>
    </bean>2.4 小心陷阱
    

    启动计划的FactoryBean们不要lazy-load,否则计划无法启动。
    Scheduler不要Autowire,否则会传入一个DataSource/SessionFactory给Scheduler,Scheduler就会认为是许要持久化任务执行情况,而其实你是JVM形式执行的,就会报没有建立Quartz持久化表,Table or View not Found。
    3. Quartz相对于JDK Timer Task的进步
    首先是细致的Cron语法;
    然后是可以把任务执行情况存储于数据库中,即使服务器重起,也能保证任务计划正确执行,详见2.1 Scheduler 总入口;
    还有线程池并发执行的能力;
    还有群集执行的能力。
    以上特征都可以在quartz的配置文件quartz.properties里看出样貌。

    4.常见问题
    4.1 如何在Spring配置文件里如何设定定时执行函数的参数?
    这是个伪问题,定时执行的函数应该是无参的。正确的方法设定该POJO的成员变量,或者由POJO自行去读取某个配置文件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名