當前位置:首頁 » 數據倉庫 » quartz操作資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

quartz操作資料庫

發布時間: 2022-09-27 11:27:33

① 有哪位大神對quartz作業調度的資料庫持久化熟悉的

quartz只是一個定時框架,能做很多事情,你所說的資料庫持久化是指,在定時任務中進行操作資料庫嗎

② 設置quartz時間時如何存入資料庫

quartz一般只這樣使用。
1、web.xml中進行相關配置
2、quartz進行邏輯操作
當應用伺服器開啟,quartz也相對開啟。

③ Java中定時任務quartz如何將歷史數據寫入新表

我建議的做法是在資料庫中建一些Quartz的表,MySQL的建、刪表腳本,最主要的修改是quartz.properties,如果你使用的是其他資料庫,可以下載Quartz的distribution,在\docs\dbTables下。然後我們可以啟動Bootstrap類,注冊、運行定時任務。你可以發現MySQL的表中已經有此定時任務的記錄了。
然後你可以停止Bootstrap類,將Bootstrap類中關於注冊、啟動定時任務的代碼刪除或注釋,然後啟動Bootstrap類,看上一次操作注冊的定時任務會不會繼續運行。
如無意外,看上一次操作注冊的定時任務會繼續運行。

④ 如何在quartz的job任務中操作資料庫

資料庫中建表。建表模版在Quartz包下docs/dbTables下,選擇相應的資料庫和版本即可。ORACLE的11個Table列表如下:

QRTZ_JOB_LISTENERS:存儲有關已配置的 JobListener 的信息

JOB_NAME
JOB_GROUP
JOB_LISTENER
QRTZ_TRIGGER_LISTENERS:存儲已配置的 TriggerListener 的信息

QRTZ_FIRED_TRIGGERS:存儲與已觸發的 Trigger 相關的狀態信息,以及相聯 Job的執行信息

QRTZ_PAUSED_TRIGGER_GRPS:存儲已暫停的 Trigger 組的信息

QRTZ_SCHEDULER_STATE:存儲集群中note實例信息,quartz會定時讀取該表的信息判斷集群中每個實例的當前狀態

INSTANCE_NAME 之前配置文件中org.quartz.scheler.instanceId配置的名字,就會寫入該欄位,如果設置為AUTO,quartz會根據物理機名和當前時間產生一個名字
LAST_CHECKIN_TIME:上次檢查時間
CHECKIN_INTERVAL :檢查間隔時間
QRTZ_LOCKS:存儲程序的悲觀鎖的信息(假如使用了悲觀鎖)

QRTZ_SIMPLE_TRIGGERS:存儲簡單的Trigger,包括重復次數,間隔,以及已觸的次數

TRIGGER_NAME :qrtz_triggers表trigger_name的外鍵
TRIGGER_GROUP:qrtz_triggers表trigger_group的外鍵
REPEAT_COUNT :重復次數
REPEAT_INTERVAL:時間間隔
TIMES_TRIGGERED:觸發次數
QRTZ_CRON_TRIGGERS:存儲cron表達式表

TRIGGER_NAME :qrtz_triggers表trigger_name的外鍵
TRIGGER_GROUP:qrtz_triggers表trigger_group的外鍵
CRON_EXPRESSION:cron表達式
TIME_ZONE_ID :時區
QRTZ_TRIGGERS:保存trigger信息

⑤ quartz定時器問題,要往資料庫插入數據,報no session

定時器的資料庫腳本有沒有導入

給你看下我的配置


⑥ spring配置quartz後怎麼訪問資料庫

quartz定時任務配置:
<bean id="scheler"
class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list>
<ref bean="ActionCronTrigger"/>
<ref bean="ActionOrderCronTrigger"/>
<ref bean="InquiryCronTrigger"/>
</list>
</property>
</bean>
其中:
<ref bean="ActionCronTrigger"/>
<ref bean="ActionOrderCronTrigger"/>
<ref bean="InquiryCronTrigger"/>
配置對應的定時任務,可配置多個,名稱要唯一,對應的是第二步中配置的CronTriggerFactoryBean
CronTriggerFactoryBean配置,由於要實現動態讀取定時任務周期時間,所以我們要寫一個類實現CronTriggerFactoryBean,類的內容如下:
public class InitCronTriggerFactoryBean extends CronTriggerFactoryBean implements Serializable {

private static final long serialVersionUID = 1L;

private SysParamServiceImpl sysParamServiceImpl;

private String key;

public void setKey(String key)
{
this.key = key;
}

public void setSysParamServiceImpl(SysParamServiceImpl sysParamServiceImpl)
{
this.sysParamServiceImpl = sysParamServiceImpl;

setCronExpression(getCronExpressionFromDB());

}

private String getCronExpressionFromDB()
{
if(StringUtils.isEmpty(key))
return "0 0 0/1 * * ?";

SysParam sysParam = new SysParam();

try
{
sysParam = sysParamServiceImpl.getNameByKey(key);
}
catch (Exception e)
{
e.printStackTrace();
}

if(sysParam != null && !StringUtils.isEmpty(sysParam.getParamValue()))
return sysParam.getParamValue();

return "0 0 0/1 * * ?";
}

}
簡單說明一下:key是用來查詢資料庫配置的CronExpression表達式的查詢條件,SysParamServiceImpl 是實現查詢的類,這幾個參數都要從spring配置的CronTriggerFactoryBean參數獲取,注意,配置的時候,key值的配置要在SysParamServiceImpl 的配置之前,否則報空指針
spring配置CronTriggerFactoryBean:
實現了CronTriggerFactoryBean之後,開始配置CronTriggerFactoryBean,現在配置的是InitCronTriggerFactoryBean :
<bean id="InquiryCronTrigger" class="cn.com.shopec.quartz.utils.InitCronTriggerFactoryBean">
<property name="jobDetail" ref="InquiryJobDetail" />
<property name="key" value="inquiryQuartzParam" />
<property name="sysParamServiceImpl" ref="sysParamServiceImpl" />
</bean>
id對應quartz定時任務配置的<ref bean="InquiryCronTrigger"/>,參數有三個,第二個和第三個是InitCronTriggerFactoryBean設置內容需要的,第一個<property name="jobDetail" ref="InquiryJobDetail" />則是定時任務執行業務邏輯的類
ps:<property name="sysParamServiceImpl" ref="sysParamServiceImpl" />,這個要配置對應的bean,我的是
<bean id="sysParamServiceImpl" class="cn.com.shopec.core.system.service.impl.SysParamServiceImpl">
</bean>
配置對應的定時任務執行業務方法的類:
<bean id="InquiryJobDetail"
class="org.springframework.scheling.quartz.JobDetailFactoryBean">
<property name="rability" value="true" />
<property name="jobClass" value="cn.com.shopec.quartz.utils.InquiryQuartz" />
<property name="jobDataAsMap">
<map>
<entry key ="inquiryServiceImpl" value-ref="inquiryServiceImpl"/>
</map>
</property>
</bean>
簡單說明一下:<property name="jobClass" value="cn.com.shopec.quartz.utils.InquiryQuartz" />配置的是你需要定時執行的類,<property name="jobDataAsMap"> 下面配置的是定時執行類中需要用到的其他類,這是由於項目啟動執行定時任務不能在定時任務類中實例化這些類,要配置才行。
對應的定時任務執行類:
public class InquiryQuartz extends QuartzJobBean {

@Autowired
private InquiryServiceImpl inquiryServiceImpl;

@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException
{
// 實例化介面
inquiryServiceImpl = (InquiryServiceImpl) arg0.getJobDetail().getJobDataMap().get("inquiryServiceImpl");

// 執行業務方法
quartzStart();
}

public void quartzStart(){
// 業務方法...
}

}
說明一下:必須要實現QuartzJobBean 介面
至此,就可以完成可配置CronExpression表達式的定時任務了!1

⑦ quartz+hibernate+spring 頻繁操作資料庫,出現 資料庫連接超過最大連接數

spring
quartz如何動態配置時間
1.
目的:動態設置時間,觸發相應的任務
2.
系統架構為
struts
+
spring
+
hibernate
3.
實現步驟:
在頁面上設置時間;
將時間轉換為unix
cron
expression;
將轉換後的時間規則表達式記錄到資料庫中(也可以寫...

⑧ quartz如何與hibernate共用數據源

quartz是定時調用的,是否你調用一次之後你的連接就關閉了,在hibernate裡面如果你要直接操作session的話可以用那個線程安全的session就是hibernateTemplate.getSessionFactory().getCurrentSession().connection()方法獲取的,這個session會自動管理的無須手動關閉。

⑨ 急求急求,quartz中有幾張資料庫表是要寫東西的怎麼寫,誰有動態添加job的項目

我最近也做了這樣一個項目,我也嘗試動態添加Job,這樣做有些困難。
所以我換了一種方法,可以實現同樣的效果。
我建議只設置一定數量的Job(其實一個就可以,比如你的任務是1個小時倍數的周期,可以設配置1個小時觸發一次),然後調用檢查所有需要運行的任務(可以建一張類似Job的業務表,記錄cronExpression和延時時時間),然後用cronExpression.getNextValidTimeAfter函數檢查下一個單位時間需要運行的任務,然後可以用其他的類似Timer來做定時執行。
請根據具體業務來設計,希望對你有幫助,謝謝!