一个信息定期删除方面的设计。假设数据库中保存有一些message.经过一定的时间T1以后,要进行一次检索,检索的message中间,超过固定保存的时间限制(假设T2)的信息,全部要删除掉。而固定保存的时间T2,是服务器端可以改变的,想问一下,当时间T2延长或者缩短的时候,删除操作应该如何设计。时间T1的定期检查值该如何确定??

解决方案 »

  1.   

    好像可以用quartz解决,但是以前没有用过quartz的经历。不知道从哪儿下手?
      

  2.   

    lz可以采用spring+quarytz解决此问题。
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >
    <!-- 实际的任务 -->
    <bean id="task" class="com.sprintTask.test.Task">
    </bean>
    <!--设置启动调用的方法与实体 -->
    <bean id="schduleReportJobDetail"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
    <ref bean="task" />
    </property>
    <property name="targetMethod">
    <value>taskMethod</value>
    </property>
    </bean>
    <!-- 设置定时器的频率 -->
    <bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
    <ref bean="schduleReportJobDetail" />
    </property>
    <property name="cronExpression">
    <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
    </property>
    </bean>
    <!-- 总管理类,如果lazy-init='false',则容器启动时就会执行调度程序-->  
        <!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序   -->
    <bean id="taskQuartz"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true">
    <property name="triggers">
    <list>
    <ref bean="cronReportTrigger" />
    </list>
    </property>
    </bean>
    </beans>
    这是一个简单的例子,可以去参考参考。
      

  3.   

    上面的用例要在EJB3.0下应用,不知道有没有哪位达人用过EJB的定时服务来解决上面的问题。