一輩子的程序員?

          愛(ài)你一生不變-芳芳!
          posts - 27, comments - 15, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          我的評(píng)論

          re: 給我離開(kāi)的勇氣!!! boddi 2008-10-07 17:18  
          是的,謝謝

          thrank you!
            是這樣的,客戶(hù)有個(gè)需求是可以自己修改任務(wù)的間隔時(shí)間的!(這個(gè)值是設(shè)置到數(shù)據(jù)庫(kù)中的),因?yàn)镾impleTriggerBean必須設(shè)置repeatInterval屬性,而這個(gè)值因?yàn)槭潜4嬖跀?shù)據(jù)中的,所以我想設(shè)置兩個(gè)定時(shí)任務(wù)CMSTransformCRMTrigger和ScheduleInfoActionTrigger,ScheduleInfoActionTrigger在CMSTransformCRMTrigger任務(wù)執(zhí)行前觸發(fā):其目的是為CMSTransformCRMTrigger根據(jù)數(shù)據(jù)庫(kù)的值設(shè)置其repeatInterval屬性,配置文件如下:

              <bean id="CMSTransformCRMEngine" class="org.springframework.aop.framework.ProxyFactoryBean">
                  
          <property name="targetSource">
                      
          <bean class="org.springframework.aop.target.SingletonTargetSource">
                          
          <constructor-arg>
                              
          <bean class="com.server.business.cms.CMSTransformCRMEngine"/>
                          
          </constructor-arg>
                      
          </bean>
                  
          </property>
                  
          <property name="interceptorNames">
                      
          <list>
                          
          <value>CallContextInterceptor</value>
                      
          </list>
                  
          </property>
              
          </bean>

           
          <bean id="CMSTransformCRMJob" class="org.springframework.scheduling.quartz.JobDetailBean">         
                  
          <property name="jobClass">
                      
          <value>com.wisecrm.server.business.cms.CMSTransformCRMScheduledTask</value>
                  
          </property>    
                  
          <property name="jobDataAsMap">
                      
          <map>
                          
          <entry key="cmsTranCRMEnginer">
                              
          <ref bean="CMSTransformCRMEngine"></ref>
                          
          </entry>
                      
          </map>
                  
          </property>
              
          </bean>
              
               
          <bean id="CMSTransformCRMTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="CMSTransformCRMJob"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>90000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>90000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="dataSource" ref="DataSource"/>     
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="ScheduleInfoAction"/>
                  
          <property name="targetMethod">
                       
          <value>setTaskTimeByPreference</value>
                  
          </property>
                  
          <!--property name="arguments">
                      <list>
                          <ref local="DataSource"/>
                          <ref local="schedulerFactory"/>
                      </list>
                  </property
          -->
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>50000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>                 
                          
          <ref local="CMSTransformCRMTrigger"/>             
                          
          <ref local="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>


          ScheduleInfoAction是動(dòng)態(tài)設(shè)置間隔時(shí)間的接口:

          public class ScheduleInfoAction {

              
          private Scheduler scheduler;

              
          public void setTaskTimeByPreference() throws SchedulerException 
          {
                  
          if (isStartCMSTransformCRMTask()) 
          {
                      SimpleTriggerBean trigger 
          = (SimpleTriggerBean) scheduler.getTrigger("ScheduleInfoActionTrigger
          ",
                                      Scheduler.DEFAULT_GROUP);
                      trigger.setRepeatInterval(Long.parseLong(Application.getSystemSettingService().getPrefValue(
          "CMSPeriod
          ")));
                      scheduler.rescheduleJob(
          "ScheduleInfoActionTrigger
          ",
                              Scheduler.DEFAULT_GROUP, trigger);
                  }
           
          else {
                      scheduler.shutdown();
                  }

              }


              public
           boolean isStartCMSTransformCRMTask() {
                  
          return Application.getSystemSettingService().getPrefValue("CMSPeriod"!= null
          ;
              }


              public
           Scheduler getScheduler() {
                  
          return scheduler;
              }


              public
           void setScheduler(Scheduler scheduler) {
                  
          this.scheduler 
          = scheduler;
              }


          }

            但是不知為和兩個(gè)任務(wù)都不執(zhí)行?

          后面我再在程序啟動(dòng)時(shí)就通過(guò)ScheduleInfoAction的factoryBean

          設(shè)置CMSTransformCRMTrigger其repeatInterval屬性,只保留一個(gè)定時(shí)任務(wù)就可以了,

          配置如下:


          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="CMSTransformCRMEngine"/>
                  
          <property name="targetMethod">
                       
          <value>run</value>
                  
          </property>
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>80000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>            
                          
          <ref bean="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>


          但總感覺(jué)到有點(diǎn)笨拙,你幫忙參考下,為什么repeatInterval不能通過(guò)繼承SimpleTriggerBean復(fù)寫(xiě)getRepeatInterval方法去設(shè)置呢?

          thrank you!
            是這樣的,客戶(hù)有個(gè)需求是可以自己修改任務(wù)的間隔時(shí)間的!(這個(gè)值是設(shè)置到數(shù)據(jù)庫(kù)中的),因?yàn)镾impleTriggerBean必須設(shè)置repeatInterval屬性,而這個(gè)值因?yàn)槭潜4嬖跀?shù)據(jù)中的,所以我想設(shè)置兩個(gè)定時(shí)任務(wù)CMSTransformCRMTrigger和ScheduleInfoActionTrigger,ScheduleInfoActionTrigger在CMSTransformCRMTrigger任務(wù)執(zhí)行前觸發(fā):其目的是為CMSTransformCRMTrigger根據(jù)數(shù)據(jù)庫(kù)的值設(shè)置其repeatInterval屬性,配置文件如下:
              <bean id="CMSTransformCRMEngine" class="org.springframework.aop.framework.ProxyFactoryBean">
                  
          <property name="targetSource">
                      
          <bean class="org.springframework.aop.target.SingletonTargetSource">
                          
          <constructor-arg>
                              
          <bean class="com.server.business.cms.CMSTransformCRMEngine"/>
                          
          </constructor-arg>
                      
          </bean>
                  
          </property>
                  
          <property name="interceptorNames">
                      
          <list>
                          
          <value>CallContextInterceptor</value>
                      
          </list>
                  
          </property>
              
          </bean>

           
          <bean id="CMSTransformCRMJob" class="org.springframework.scheduling.quartz.JobDetailBean">         
                  
          <property name="jobClass">
                      
          <value>com.wisecrm.server.business.cms.CMSTransformCRMScheduledTask</value>
                  
          </property>    
                  
          <property name="jobDataAsMap">
                      
          <map>
                          
          <entry key="cmsTranCRMEnginer">
                              
          <ref bean="CMSTransformCRMEngine"></ref>
                          
          </entry>
                      
          </map>
                  
          </property>
              
          </bean>
              
               
          <bean id="CMSTransformCRMTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="CMSTransformCRMJob"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>90000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>90000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="dataSource" ref="DataSource"/>     
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="ScheduleInfoAction"/>
                  
          <property name="targetMethod">
                       
          <value>setTaskTimeByPreference</value>
                  
          </property>
                  
          <!--property name="arguments">
                      <list>
                          <ref local="DataSource"/>
                          <ref local="schedulerFactory"/>
                      </list>
                  </property
          -->
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>50000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>                 
                          
          <ref local="CMSTransformCRMTrigger"/>             
                          
          <ref local="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>

          ScheduleInfoAction是動(dòng)態(tài)設(shè)置間隔時(shí)間的接口:
          public class ScheduleInfoAction {

              
          private Scheduler scheduler;

              
          public void setTaskTimeByPreference() throws SchedulerException {
                  
          if (isStartCMSTransformCRMTask()) {
                      SimpleTriggerBean trigger 
          = (SimpleTriggerBean) scheduler.getTrigger("ScheduleInfoActionTrigger",
                                      Scheduler.DEFAULT_GROUP);
                      trigger.setRepeatInterval(Long.parseLong(Application.getSystemSettingService().getPrefValue(
          "CMSPeriod")));
                      scheduler.rescheduleJob(
          "ScheduleInfoActionTrigger",
                              Scheduler.DEFAULT_GROUP, trigger);
                  }
           
          else {
                      scheduler.shutdown();
                  }

              }


              public
           boolean isStartCMSTransformCRMTask() {
                  
          return Application.getSystemSettingService().getPrefValue("CMSPeriod"!= null;
              }


              public
           Scheduler getScheduler() {
                  
          return scheduler;
              }


              public
           void setScheduler(Scheduler scheduler) {
                  
          this.scheduler = scheduler;
              }


          }
            但是不知為和兩個(gè)任務(wù)都不執(zhí)行?
          后面我再在程序啟動(dòng)時(shí)就通過(guò)ScheduleInfoAction的factoryBean
          設(shè)置CMSTransformCRMTrigger其repeatInterval屬性,只保留一個(gè)定時(shí)任務(wù)就可以了,
          配置如下:
          <bean id="ScheduleInfoAction" class="com.wisecrm.server.business.cms.ScheduleInfoAction">         
                  
          <property name="scheduler" ref="schedulerFactory"/>     
              
          </bean>
              
              
          <bean id="ScheduleInfoActionFactory" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                  
          <property name="targetObject" ref="CMSTransformCRMEngine"/>
                  
          <property name="targetMethod">
                       
          <value>run</value>
                  
          </property>
                  
          <property name="concurrent" value="false"/>
              
          </bean>
              
              
          <bean id="ScheduleInfoActionTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         
                  
          <property name="jobDetail">
                      
          <ref bean="ScheduleInfoActionFactory"></ref>
                  
          </property>    
                  
          <property name="startDelay">
                      
          <value>80000</value>
                  
          </property>
                  
          <property name="repeatInterval">
                      
          <value>80000</value>
                  
          </property>
              
          </bean>
              
              
          <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         
                  
          <property name="triggers">             
                      
          <list>            
                          
          <ref bean="ScheduleInfoActionTrigger"/>             
                      
          </list>         
                  
          </property>
              
          </bean>
          但總感覺(jué)到有點(diǎn)笨拙,你幫忙參考下
          re: javaexcelapplication boddi 2007-06-07 15:35  
          其實(shí)excel的sheet不可以一個(gè)都沒(méi)有的
          導(dǎo)出excel如何進(jìn)行?謝謝
          SELECT wjbh,wjmc FROM (SELECT row_.*, rownum rownum_ FROM (select wjbh,wjmc,rownum rn from y_wjlx) row_ WHERE rownum <= #end#) WHERE rownum_ > #start#
          在SQLSERVER中無(wú)法實(shí)現(xiàn)啊!請(qǐng)問(wèn)SQLSERVER有何高招嗎?謝謝
          SELECT wjbh,wjmc FROM (SELECT row_.*, rownum rownum_ FROM (select wjbh,wjmc,rownum rn from y_wjlx) row_ WHERE rownum <= #end#) WHERE rownum_ > #start#
          中的select wjbh,wjmc,rownum rn from y_wjlx不會(huì)造成很大的效率問(wèn)題嗎?
          主站蜘蛛池模板: 黑水县| 靖远县| 沈丘县| 建德市| 科尔| 七台河市| 六盘水市| 黄龙县| 武威市| 白河县| 交口县| 达州市| 栾川县| 通道| 竹山县| 兴国县| 喀喇沁旗| 那坡县| 磐石市| 怀化市| 林芝县| 桦南县| 道孚县| 新河县| 突泉县| 沁阳市| 正阳县| 炎陵县| 江川县| 丹凤县| 都江堰市| 探索| 瓦房店市| 甘南县| 太仓市| 满洲里市| 莆田市| 金乡县| 梁河县| 乌审旗| 新竹县|