Quartz este o sursă deschisă și liberă, de locuri de muncă de servicii full-featured de programare care pot fi integrate cu, sau utilizate alături orice aplicatie Java EE sau Java SE - de la cel mai mic aplicație de sine stătătoare pentru cel mai mare sistem de e-commerce .
Quartz pot fi utilizate pentru a crea programe simple sau complexe pentru executarea zeci, sute, sau chiar zeci-of-mii de locuri de muncă; de locuri de muncă ale căror sarcini sunt definite ca elemente standard Java care pot executate le poate programa pentru a face practic nimic. Quartz Scheduler include multe caracteristici enterprise-class, cum ar fi tranzacțiile JTA si clustering.
Caracteristici :
- Quartz poate rula încorporat în altă aplicație de sine stătătoare
- Quartz poate fi instanțiat în un server de aplicații (sau container servlet), și de a participa la operațiunile XA
- Quartz poate rula ca un program stand-alone (în cadrul propriei Java Virtual Machine), care urmează să fie utilizat prin intermediul RMI
- Quartz poate fi instanțiată ca un grup de programe de stand-alone
- Jobs sunt programate să ruleze atunci când apare o anumită Trigger. Declanseaza pot fi create cu aproape orice combinație de următoarele directive ...
- la un anumit moment al zilei (la milisecunda)
- în anumite zile ale săptămânii
- în anumite zile ale lunii
- în anumite zile ale anului
- nu pe anumite zile enumerate într-un calendar înregistrat (cum ar fi o vacanță de afaceri)
- repetat un anumit număr de ori
- repetat până la o anumită dată / data li>
- repetată la nesfârșit
- repetat cu un interval de întârziere
(Capabilități cu sarcină echilibru și nu-peste)
Ce este nou în această versiune:
- Prezentarea cele mai multe schimbări semnificative API:
- Metode de API care se întorc (sau iau ca parametrii) tablouri reveni acum (sau de a lua) tastat colecții. De exemplu, mai degrabă decât getJobGroupNames (): String [] avem acum getJobGroupNames (): Lista li>
- Job și identificarea de declanșare se bazează acum pe JobKey și TriggerKey. Chei includ atât un nume și de grup. Metodele care operează pe anumite locuri de muncă / declanseaza acum ia cheile ca parametru. De exemplu, getTrigger (cheie TriggerKey): Trigger, mai degrabă decât getTrigger (String nume, String Grup):. Trigger
- Trigger este acum o interfață, mai degrabă decât o clasă. De asemenea pentru SimpleTrigger, CronTrigger, etc.
- New DSL / pe bază de constructor API pentru locuri de muncă de construcție și declanșează:
- Metode de TriggerUtils legate de construcția ușoară a Perioada au fost mutate în noua clasa DateBuilder, care poate fi folosit cu importurile statice pentru a crea frumos Data instanțe pentru a începe de declanșare și de sfârșit, etc.
- Interfața StatefulJob a fost depasit in favoarea noilor adnotări la nivel de clasă pentru clasele de munca (folosind ambele adnotările produce echivalentă cu cea a interfeței StatefulJob vechi):
- ersistJobDataAfterExecution - instruiește planificatorul pentru a re-stoca conținutul de locuri de muncă în JobDataMap după executarea completează .
- isallowConcurrentExecution - instruiește planificatorul pentru a bloca alte instanțe ale aceluiași loc de muncă (de JobKey) de la executarea atunci când unul este deja .
- adnotare New:ExecuteInJTATransaction. Adăugarea acestui adnotare la o clasă de locuri de muncă instruiește Quartz pentru a începe o tranzacție JTA înainte de a executa lucrarea (și comite / rollback după finalizarea / excepție). Configurare proprietatea 'wrapJobExecutionInUserTransaction' din versiunea 1.x încă mai există, dar noi vă permite adnotarea tune comportamentul pe fiecare loc de muncă, în timp ce proprietatea de configurare afectează toate locurile de muncă.
- modificări semnificative în utilizarea JobListener și TriggerListener:
- Eliminarea distincție între "global" și ascultătorii "non-globale"
- JobDetails și declanșează nu mai configurat cu o listă de nume de ascultători de a notifica, în loc ascultătorii identifica locuri de muncă / declanseaza sunt interesează.
- Ascultătorii sunt atribuite în prezent un set de cazuri Meciuri -. care prevăd norme potrivite pentru locuri de muncă / declanseaza doresc să primească evenimente pentru
- Ascultătorii sunt acum gestionate prin intermediul unui API ListenerManager, mai degrabă decât direct cu API Scheduler.
- Clasa SchedulerException și clasa ierarhia a fost curățat.
- DateIntervalTrigger a fost redenumit la CalendarIntervalTrigger (sau mai exact clasa de beton este acum CalendarIntervalTriggerImpl).
- Noțiunea (proprietate) de "volatilitate" de locuri de muncă și declanșează a fost eliminată.
- New MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY instrucțiuni de declanșare rateu permite o declanșare fi configurat în așa fel încât să se selectiv ignorat de toată rateu manipulare. Cu alte cuvinte, se va trage de îndată ce se poate, cu nici un tratament special - o opțiune excelentă pentru îmbunătățirea performanței în special cu setări care au o mulțime de-o lovitură (non-repetarea) declanseaza .
- compareTo Trigger lui () metoda în prezent se referă corect la egal sale () metoda, în măsura în care compară cheia pe trăgaci, mai degrabă decât data viitoare foc. Un nou comparator care sortează declanseaza funcție de timp foc, prioritate și o cheie a fost adăugat ca Trigger.TriggerTimeComparator.
- Caracteristici noi:
- Scheduler.clear () metodă oferă convenabilă (și periculos!), O modalitate de a elimina toate locuri de munca, triggere si calendare de programatorul.
- Scheduler.scheduleJobs (Map triggersAndJobs, boolean înlocui) metodă oferă adăugarea convenabilă vrac de locuri de muncă și declanșează.
- Scheduler.unscheduleJobs (Lista triggerKeys) metodă oferă vrac convenabilă unscheduling de locuri de muncă.
- Scheduler.deleteJobs (Lista jobKeys) metodă oferă ștergerea convenabilă vrac de locuri de muncă (și triggere conexe).
- Scheduler.checkExists (JobKey jobKey) și Scheduler.heckExists (TriggerKey triggerKey) metode ofera modalitate convenabilă de a determina unicitatea unui loc / taste de declanșare (spre deosebire de a avea vechi de a pentru a prelua de locuri de muncă / declanșare după nume și apoi verificați dacă rezultatul a fost nul).
- JDBCJobStore permite acum un set de tabele pentru a fi utilizate de către mai multe instanțe distincte scheduler
- JDBCJobStore este acum capabil să stocheze implementări non-core Trigger fără a utiliza coloane BLOB, prin utilizarea noua interfață TriggerPersistenceDelegate, care poate (opțional) să fie puse în aplicare de către implementatori de tipuri de declanșare particularizate.
- JDBCJobStore include acum un SybaseDelegate pentru compatibilitate îmbunătățită cu Sybase
- expresii Cron sprijini acum posibilitatea de a specifica un offset pentru "ultima zi a lunii" și "ultimul timpul săptămânii de luni" expresii. Pentru exemple:. "L-3" (trei zile înapoi la ultima lunii) sau "L-3W" (cea mai apropiată zi lucrătoare la ziua trei zile în urmă de la ultima zi a lunii)
- fișiere XML care conțin date de programare au acum un mod de a specifica de declanșare a începe ori mai compensează în viitor din momentul în care fișierul este procesat (util pentru declanșează care au nevoie pentru a începe tragere la câtva timp după cererea este lansat / implementat).
- Din schema:
- fișier XML schema acum sprijină specificând proprietatea "prioritate" a declanseaza.
- QuartzInitializerListener (și QuartzInitializerServlet) sprijină nou parametru ", așteptați-la-închidere", care va determina Scheduler să aștepte pentru executarea de locuri de muncă pentru a finaliza înainte de a închide, atunci când containerul servlet este ne-implementarea aplicatiei.
- Adaugat DirectoryScanJob la locuri de muncă de bază, care nava cu Quartz, a adăugat, de asemenea, parametrul minim de varsta pentru FileScanJob pre-existente.
- Added capacitatea de a adăuga ServletContext în SchedulerContext atunci când se utilizează QuartzInitializerListener sau QuartzInitializerServlet pentru a inițializa Quartz in cadrul unei aplicatii web Java EE.
- Diverse:
- Diverse îmbunătățiri de performanță, inclusiv (dar fără a se limita la):
- Posibilitatea de a declanseaza lot dobândesc care sunt gata să fie concediat, care pot oferi îmbunătățiri de performanță pentru schedulers foarte ocupat
- Metode de lot plus / îndepărtarea de locuri de muncă și declanșează (vezi "Caracteristici noi")
- Triggere au o nouă opțiune de instruire rateu, MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, care pot fi utile dacă nu aveți nevoie de rateuri de manipulare pentru declanșare (e), și doresc să profite de o creștere a performanței
- Diverse bug fixat, pentru a vedea lista completa notele de lansare de la Jira: https://jira.terracotta.org/jira/secure/ReleaseNote.jspa?projectId=10282&version=10842
- DBCP nu mai este folosit pentru punerea în comun conexiune de date, c3po este folosit în loc.
- implementări JobFactory sunt acum inițializată cu (trecut) un mâner pentru Scheduler.
- Toate exemplele ambalate în? Exemplele? director de distribuție Quartz au fost actualizate pentru a face uz de (demonstra) noul API pentru definirea locuri de muncă și declanșează.
Ce este nou în versiunea 1.6.6:
- câteva corecții importante bug-uri
- de câteva îmbunătățiri minore
Cerințe :
- Java 2 Standard Edition Runtime Environment
Comentariile nu a fost găsit