首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

quartz 任务调度配置~ 跟一个Oracle有关问题

2012-01-08 
quartz 任务调度配置~~~!!! 跟一个Oracle问题每天早上8:30每天下午五点整每天下午五点半上面的几个时间点

quartz 任务调度配置~~~!!! 跟一个Oracle问题
每天早上8:30
每天下午五点整
每天下午五点半
上面的几个时间点到的时候、就调用配置的方法。我不知道我的配置对不对各位给看看:

XML code
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="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="visInfoQuartz" class="com.boxun.crm.util.mms.DBSmsVisitInfo" />    <!-- bean触发方法配置 -->    <bean name="quartzBean"        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <!-- bean名字 -->        <property name="targetObject" ref="visInfoQuartz" />        <!-- bean方法 -->        <property name="targetMethod">              <value>SmsVisInfo_M</value>        </property>        <property name="concurrent">            <value>false</value>        </property>    </bean>    <!-- bean触发时间配置  每天早上8:30 -->    <bean id="quartzTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">        <!-- 触发bean配置 -->        <property name="jobDetail">            <ref bean="quartzBean" />        </property>        <!-- 触发时间配置   每天早上8:30 -->        <property name="cronExpression">            <value>0 30 8 * * ?</value>          </property>    </bean>        <!-- bean触发方法配置 -->    <bean name="DateBean"        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <!-- bean名字 -->        <property name="targetObject" ref="visInfoQuartz" />        <!-- bean方法 -->        <property name="targetMethod">            <value>SmsVisInfo_A</value>        </property>        <property name="concurrent">            <value>false</value>        </property>    </bean>            <!-- bean触发时间配置 每天下午5:00 -->    <bean id="DateTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">        <!-- 触发bean配置 -->        <property name="jobDetail">            <ref bean="DateBean" />        </property>        <!-- 触发时间配置 每天下午5:00  -->        <property name="cronExpression">            <value>0 0 17 * * ?</value>          </property>    </bean>        <!-- bean触发方法配置 -->    <bean name="DayBean"        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <!-- bean名字 -->        <property name="targetObject" ref="visInfoQuartz" />        <!-- bean方法 -->        <property name="targetMethod">            <value>SmsVisInfo_B</value>        </property>        <property name="concurrent">            <value>false</value>          </property>    </bean>            <!-- bean触发时间配置 每天下午5:30 -->    <bean id="DayTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">        <!-- 触发bean配置 -->        <property name="jobDetail">            <ref bean="DayBean" />        </property>        <!-- 触发时间配置 每天下午5:30  -->        <property name="cronExpression">            <value>0 30 17 * * ?</value>          </property>    </bean>            <!-- quartz触发器管理 -->    <bean id="sfb"        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">        <!-- 添加触发器 -->        <property name="triggers">            <list>                <ref local="quartzTrigger" />                  <ref local="DateTrigger" />                <ref local="DayTrigger"></ref>                <!--这里调用的列表,还可以添加其他的任务-->               </list>        </property>    </bean></beans> 


Java code
package com.boxun.crm.util.mms;import java.sql.SQLException;import org.hibernate.HibernateException;import com.boxun.crm.util.DAOUtil;public class DBSmsVisitInfo {        /*     * 早上8点半执行方法     */    public void SmsVisInfo_M(){        System.out.println("早上8点半执行方法----------------------------------------");        try {            int Number = DAOUtil.getInstance().executeByFun("mas_new_gzyd.VisitInfoByGZYD");            if(Number > 0)             {                 //向MAS表中插入数据成功,短信发送成功!                 System.out.println("早上8点半执行方法:短信发送成功————"+Number);                              }          } catch (HibernateException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }    }        /*     * 下午五点执行方法     */    public void SmsVisInfo_A(){        System.out.println("下午五点执行方法----------------------------------------");        try {            int Number = DAOUtil.getInstance().executeByFun("mas_new_gzyd_visinfo.time_VisInfo");            if(Number > 0)             {                 //向MAS表中插入数据成功,短信发送成功!                 System.out.println("下午五点执行方法:短信发送成功————"+Number);                              }          } catch (HibernateException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }    }        /*     * 下午五点半执行方法     */    public void SmsVisInfo_B(){           System.out.println("下午五点半执行方法----------------------------------------");        try {            int Number = DAOUtil.getInstance().executeByFun("mas_new_gzyd_visinfo.time_VisInfo_users");            if(Number > 0)             {                 //向MAS表中插入数据成功,短信发送成功!                 System.out.println("下午五点半执行方法:短信发送成功————"+Number);                              }          } catch (HibernateException e) {            e.printStackTrace();        } catch (SQLException e) {               e.printStackTrace();        }    }}


我一个类中写了三个方法、在这几个时间段内分别调用对应的方法!
在测试的时候、有点乱、!
我整理整理!
配置好过后、我运行起来、把系统时间改成今天7点29然后等待30的到来!
-------最后时间过去了、但是没有打印信息、!
改成16点59等待17点
-------最后时间过去了、但是没有打印信息、!
改成17:29等待17:30~~~!
-------最后时间过去了、但是没有打印信息、!
这个是什么原因?难道是因为它们不能在同一个类里面!!!


最后在问一点、在Oracle的packages中定义了一个Function 然后java调用!
其中Function中操作insert但是没有Commit!
java程序也不提交事务~~~!!!
那么它会不会像触发器那样自动给你加上事务呢?


[解决办法]
Java code
public class WebQuartzApplication extends QuartzJobBean{    private static boolean flag = true;    @Override    protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException {        arg0.getJobDetail().setRequestsRecovery(true);        this.doIt();    }    public void doIt(){        if (flag) {            System.out.println("---------------------------\n白天了,该起床工作挣钱啦!\n工作中、、、挣钱中、、、");        }else{            System.out.println("晚上了,累了一天可以休息啦!");        }        flag = !flag;    }}
[解决办法]
Java code
把 <ref local="quartzTrigger" />   <ref local="DateTrigger" /> <ref local="DayTrigger"></ref>改为:<ref  bean="quartzTrigger" />   <ref bean="DateTrigger" /> <ref bean="DayTrigger"></ref> 

热点排行