當前位置:首頁 » 網頁前端 » quartzweb界面
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

quartzweb界面

發布時間: 2023-08-31 18:04:25

1. 在Java中如何設置一個定時任務,在每天的一個時間點自動執行一個特定的程序具體代碼怎麼寫代碼全點

Quartz定時機制
首先導入jar包到程序內 quartz-all-1.6.0.jar

然後創建一個XML
TimeConfig.xml 名字可以自己定義

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="mainTask" class="net.timed.MainTask"/> //你要執行的任務類
//jar類
<bean id="mainJob" class="org.springframework.scheling.quartz.">
<property name="targetObject">
<ref bean="mainTask"/>//將你的類添加到定時器當中
</property>
<property name="targetMethod">
<value>execute</value> //定時執行類裡面的哪個方法
</property>
</bean>

<bean id="timeTrigger" class="org.springframework.scheling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="mainJob"/>
</property>
<!--
0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
0 0 12 ? * WED 表示每個星期三中午12點
"0 0 12 * * ?" 每天中午12點觸發
"0 15 10 ? * *" 每天上午10:15觸發
"0 15 10 * * ?" 每天上午10:15觸發
"0 15 10 * * ? *" 每天上午10:15觸發
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鍾觸發
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鍾觸發
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鍾觸發
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鍾觸發
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發
"0 15 10 15 * ?" 每月15日上午10:15觸發
"0 15 10 L * ?" 每月最後一日的上午10:15觸發
"0 15 10 ? * 6L" 每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發

上面這個是quartz的語法 定時單位
-->
<property name="cronExpression">
<value>0 0/5 * * * ?</value> //定時的語法
</property>
</bean>
<bean id="sfb" class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list>
<ref local="timeTrigger"/>
</list>
</property>
</bean>
</beans>

//下面這個類就是我在XML中引入的類
package net.timed;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainTask {
public void execute() throws IOException
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("do my job"+dateFormat.format(new Date()));
Runtime.getRuntime().exec("cmd /c start E:/mbl/BusinessOffice/MoneDB/bin/bakup.bat");
}
}

然後在web.xml中把這個TimeConfig.xml添加進去作為監聽
系統啟動的時候自動就監聽這個事件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/TimerConfig.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

這個是quartz spring的定時機制 請仔細的看看 如果可以請給分哦

2. javaweb,監聽器和定時器(Quartz)互相調控的問題

不明白你為什麼要這樣設計程序
通常情況下監聽器只是用來啟動定時器,剩下的工作都是讓定時器去處理
因為你想,你的定時器怎麼啟動起來的?
肯定是交給監聽器去啟動,例如servlet監聽器,servlet容器一創建就執行,也就是伺服器一啟動就執行,這個時候你在監聽器里開啟一個定時器就做事就行了

接下來就是讓你的定時器去定時 定時5秒去查詢表A有沒有數據如果有就處理就行了
定時器本身就是定時執行,因此不需要延時啟動了

純手工打字的,請採納哈

3. 定時調度框架quartz可以定義單個觸發器多個任務嗎

單個觸發器只能單個任務,單個任務可以多個觸發器觸發。

Quartz是一個用Java編寫的任務調度框架,任務調度是什麼,舉例說明:比如需要在每個星期四下午三點時候發周報,我們需要一個系統在兩點半的時候給一個發周報的提醒,這個提醒就是一次任務,每周星期四下午兩點半的時候自動觸發這個任務,這就可以理解為這個系統的一次任務調度。

Quartz 提供給定時調度已定義好的任務的能力,如果了解quartz的調度計劃cronExpression表達式的配置,會感嘆quartz的靈活與強大。

(3)quartzweb界面擴展閱讀:

Quartz框架的核心是調度器。調度器負責管理Quartz應用運行時環境。調度器不是靠自己做所有的工作,而是依賴框架內一些非常重要的部件。Quartz不僅僅是線程和線程管理。為確保可伸縮性,Quartz採用了基於多線程的架構。

啟動時,框架初始化一套worker線程,這套線程被調度器用來執行預定的作業。這就是Quartz怎樣能並發運行多個作業的原理。Quartz依賴一套松耦合的線程池管理部件來管理線程環境。本篇文章中,會多次提到線程池管理,但Quartz裡面的每個對象是可配置的或者是可定製的。

4. spring 4 quartz 2.x動態配置triggers

spring 4.x沒有配置過,這里有一個spring 3.x 的quartz定時配置,你參考參考:

<?xmlversion="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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!--
1、JobDetail:JobDetail是一個具體的類。
2、Trigger:觸發器,它用於定義Job何時執行。最常用的是SimpleTrigger和CronTrigger。
一般來說,如果你需要在一個固定的時間和重復次數或者一個固定的間隔時間,那麼SimpleTrigger比較合適;
如果你有許多復雜的作業調度,那麼CronTrigger比較合適。
CronTrigger和Unix的cron機制基本一樣,我們需要的只是一個cron表達式。
比如「0012**?」會在每天中午12點觸發執行;「01510槐嫌?*6L」會在每個月的最後一個星期五的早上10:15觸發Job執行。
鉛態手3、Scheler和SchelerFactory:Scheler負責管理Trigger、調度Job,
SchelerFactory則是Scheler工廠,負責生成Scheler。
-->

<!--總管理類如果將lazy-init='false'那麼容器啟動就會執行調度程序-->
<beanclass="org.springframework.scheling.quartz.SchelerFactoryBean"lazy-init="false">
<!--通過屬性配置spring上下文[此屬性可省略]-->
<propertyname="">
<value>applicationContext</value>
</property>
<propertyname="triggers">
<list>
<!--作業調度器,list下可加入其他的調度器-->
<refbean="testTrigger"/>
</list>
</property>
<propertyname="autoStartup"value="true"/>
</bean>

<!--要調度的對象-->
<beanid="testJob"class="name.zealze.test.JobTest"/>

<beanid="testTrigger"class="org.springframework.scheling.quartz.CronTriggerBean">
<propertyname="jobDetail"ref="testJobDetail"/>
<!--按cron表達式時間點觸發事件http://cron.qqe2.com/-->
<propertyname="cronExpression"value="00/2***?"/>
</bean>

<beanid="testJobDetail"class="org.springframework.scheling.quartz.">
<propertyname="targetObject"ref="testJob"/>
<propertyname="targetMethod"value="execute"/>
<!--是否允許任務閉銷並發執行。當值為false時,表示必須等到前一個線程處理完畢後才再啟一個新的線程-->
<propertyname="concurrent"value="false"/>
</bean>

</beans>