Ο χαλαζίας είναι ένα open source και δωρεάν, πλήρως εξοπλισμένο υπηρεσία προγραμματισμού εργασιών που μπορεί να ενσωματωθεί με, ή να χρησιμοποιηθεί παράλληλα με σχεδόν οποιαδήποτε Java EE ή Java SE εφαρμογής - από το μικρότερο αυτόνομη εφαρμογή στο μεγαλύτερο σύστημα ηλεκτρονικού εμπορίου .
Χαλαζία μπορεί να χρησιμοποιηθεί για τη δημιουργία απλών ή σύνθετων χρονοδιαγράμματα για την εκτέλεση δεκάδες, εκατοντάδες, ή ακόμη και δεκάδες-of-χιλιάδες θέσεις εργασίας? θέσεις εργασίας τα καθήκοντα του οποίου ορίζονται ως τυποποιημένα στοιχεία Java που μπορεί να εκτελεστεί σχεδόν οτιδήποτε μπορεί να τους πρόγραμμα για να κάνει. Το Quartz Scheduler περιλαμβάνει πολλά χαρακτηριστικά εταιρικής κατηγορίας, όπως συναλλαγές JTA και ομαδοποίησης.
Χαρακτηριστικά :
- Διάρκεια Περιβάλλοντα:
- χαλαζία μπορεί να τρέξει ενσωματωμένα μέσα σε ένα άλλο επιδαπέδια εφαρμογής
- χαλαζία μπορεί να αποκτήσει υπόσταση μέσα σε έναν εξυπηρετητή εφαρμογών (ή εμπορευματοκιβώτιο servlet), και να συμμετάσχουν σε συναλλαγές XA
- χαλαζία μπορεί να τρέξει ως ένα αυτόνομο πρόγραμμα (κατά τη δική της Java Virtual Machine της), για να χρησιμοποιηθούν μέσω RMI
- χαλαζία μπορεί να αρχικοποιείται ως ένα σύμπλεγμα των προγραμμάτων stand-alone (με φορτίο ισορροπία και ανακατεύθυνσης δυνατότητες)
- Προγραμματισμός εργασίας:
- Εργασία προγραμματιστεί να εκτελείται όταν παρουσιάζεται ένα δεδομένο έναυσμα. Εναύσματα μπορούν να δημιουργηθούν με σχεδόν οποιοδήποτε συνδυασμό των ακόλουθων οδηγιών ...
- σε μια συγκεκριμένη ώρα της ημέρας (σε επίπεδο χιλιοστού του δευτερολέπτου)
- για ορισμένες ημέρες της εβδομάδας
- για ορισμένες μέρες του μήνα
- για ορισμένες ημέρες του χρόνου
- Δεν σε ορισμένες ημέρες που αναφέρονται σε ονομαστικές Ημερολόγιο (όπως αργίες)
- επαναληφθεί συγκεκριμένο αριθμό φορών
- επαναλαμβάνεται μέχρι μια συγκεκριμένη ημερομηνία / ώρα
- επαναλαμβάνεται απεριόριστα
- επαναληφθεί με μεσοδιάστημα καθυστέρηση
Τι είναι καινούργιο σε αυτή την έκδοση:
- Περίγραμμα των πιο σημαντικών αλλαγών API:
- μεθόδους API που επιστρέφουν (ή λαμβάνουν ως παραμέτρους) συστοιχίες επιστρέψει τώρα (ή να λάβει) δακτυλογραφημένα συλλογές. Για παράδειγμα, αντί να getJobGroupNames (): String [] έχουμε τώρα getJobGroupNames (): Λίστα
- Εργασία και ταυτοποίηση ενεργοποίησης βασίζεται πλέον στην JobKey και TriggerKey. Κλειδιά περιλαμβάνει τόσο το όνομα και την ομάδα. Μέθοδοι που λειτουργούν σε συγκεκριμένες θέσεις / ενεργοποιεί τώρα να πάρουν τα κλειδιά ως παράμετρο. Για παράδειγμα, getTrigger (πλήκτρο TriggerKey): Σκανδάλη, παρά getTrigger (όνομα String, Group String):. Σκανδάλη
- σκανδάλη είναι πλέον μια διεπαφή, και όχι μια τάξη. Ομοίως για SimpleTrigger, CronTrigger, κλπ.
- Νέα DSL / οικοδόμος-based API για οικοδομικές εργασίες και εναύσματα:
- Οι μέθοδοι από TriggerUtils που σχετίζονται με την εύκολη κατασκευή της Ημερομηνίες έχουν μετακινηθεί σε νέα κατηγορία DateBuilder, ότι μπορεί να χρησιμοποιηθεί με στατική εισαγωγές για να δημιουργήσετε όμορφα Ημερομηνία περιπτώσεις για την έναρξη της σκανδάλης και λήξης, κλπ.
- Το περιβάλλον StatefulJob έχει καταργηθεί υπέρ των νέων σχολιασμών τάξη-επίπεδο για τους κλάδους εργασίας (χρησιμοποιώντας και τα δύο σχολιασμούς παράγει ισοδύναμο με εκείνο της παλιάς διεπαφής StatefulJob):
- ersistJobDataAfterExecution - δίνει εντολή στον προγραμματιστή να αποθηκεύσετε ξανά JobDataMap περιεχόμενο του Ιώβ μετά την εκτέλεση ολοκληρώνει .
- isallowConcurrentExecution - δίνει εντολή στον προγραμματιστή να εμποδίσει άλλες περιπτώσεις την ίδια δουλειά (από JobKey) από την εκτέλεση, όταν κάποιος είναι ήδη .
- Νέα σημείωση:ExecuteInJTATransaction. Η προσθήκη αυτού του σχολιασμού σε μια κατηγορία εργασίας εντολή χαλαζία για να ξεκινήσει μια συναλλαγή JTA πριν από την εκτέλεση της εργασίας (και να δεσμευτούν / επαναφορά μετά την ολοκλήρωση / πλην). Η ιδιότητα παραμέτρων «wrapJobExecutionInUserTransaction» από έκδοση 1.x εξακολουθεί να υπάρχει, αλλά η νέα σχολιασμού σας επιτρέπει να συντονίζεστε η συμπεριφορά ανά θέση εργασίας, ενώ η ιδιοκτησία config επηρεάζει όλες τις θέσεις εργασίας.
- Σημαντικές αλλαγές στη χρήση της JobListener και TriggerListener:
- Άρση της διάκρισης μεταξύ «παγκόσμια» και «μη-παγκόσμια» ακροατές
- JobDetails και εναύσματα δεν είναι πλέον διαμορφώνεται με μια λίστα με τα ονόματα των ακροατών να κοινοποιούν, αντί ακροατές προσδιορίσει ποιες θέσεις εργασίας / ενεργοποιεί τους ενδιαφέρουν.
- Οι ακροατές έχουν αναλάβει τώρα μια σειρά από Matcher περιπτώσεις -. Που παρέχουν την προσαρμογή στους κανόνες για τις θέσεις εργασίας / ενεργοποιεί επιθυμούν να λάβουν εκδηλώσεις για
- Οι ακροατές τώρα γίνεται μέσω μιας ListenerManager API, και όχι απευθείας με τον προγραμματιστή API.
- Η κατηγορία SchedulerException και ταξική ιεραρχία έχει καθαριστεί.
- DateIntervalTrigger μετονομάστηκε σε CalendarIntervalTrigger (ή ακριβέστερα η συγκεκριμένη κατηγορία είναι τώρα CalendarIntervalTriggerImpl).
- Η έννοια (ιδιοκτησία) της «μεταβλητότητα» των θέσεων και ενεργοποιεί έχει εξαλειφθεί.
- Νέα MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY εντολή ενεργοποίησης των διαλείψεων, αφήνει ένα έναυσμα να διαμορφωθεί με τέτοιο τρόπο ώστε να είναι επιλεκτικά αγνοείται από όλους των διαλείψεων χειρισμό. Με άλλα λόγια, θα βάλει φωτιά και μόλις μπορέσει, χωρίς να απαιτείται ειδικός χειρισμός - μια μεγάλη επιλογή για τη βελτίωση της απόδοσης ιδιαίτερα με ρυθμίσεις που έχουν τα μέρη των one-shot (μη επανάληψη) πυροδοτεί .
- μεθόδου compareTo σκανδάλης () αναφέρεται πλέον σωστά ίσον της μεθόδου (), υπό την έννοια ότι συγκρίνει το πλήκτρο ενεργοποίησης, και όχι την επόμενη φορά φωτιά. Μια νέα Συγκριτικό που ταξινομεί ενεργοποιεί ανάλογα με την ώρα πυρκαγιά, προτεραιότητα και βασικό προστέθηκε ως Trigger.TriggerTimeComparator.
- Νέα Χαρακτηριστικά:
- Scheduler.clear () μέθοδος παρέχει βολικές (και επικίνδυνο!) Τρόπος για να αφαιρέσετε όλες τις θέσεις εργασίας, ενεργοποιεί και ημερολόγια από τον προγραμματιστή.
- Scheduler.scheduleJobs (Χάρτης triggersAndJobs, Boolean το αντικαταστήσει) μέθοδος παρέχει άνετη μαζική προσθήκη των θέσεων εργασίας και εναύσματα.
- Scheduler.unscheduleJobs (Λίστα triggerKeys) μέθοδος παρέχει άνετη μαζική unscheduling των θέσεων εργασίας.
- Scheduler.deleteJobs (Λίστα jobKeys) μέθοδος παρέχει άνετη μαζική διαγραφή των θέσεων εργασίας (και των σχετικών ωθήσεις).
- Scheduler.checkExists (JobKey jobKey) και Scheduler.heckExists (TriggerKey triggerKey) μεθόδων παρέχει βολικό τρόπο για να καθορίσουν τη μοναδικότητα της εργασίας / πλήκτρα σκανδάλης (σε αντίθεση με την παλιά έχουν να πρέπει να ανακτήσετε την εργασία / σκανδάλη από το όνομα και, στη συνέχεια, ελέγξτε αν το αποτέλεσμα ήταν null).
- JDBCJobStore επιτρέπει τώρα μία σειρά πινάκων που πρέπει να χρησιμοποιούνται από πολλαπλές ξεχωριστές περιπτώσεις προγραμματιστή
- JDBCJobStore είναι πλέον ικανό να αποθηκεύει τις μη βασικές εφαρμογές σκανδάλη χωρίς τη χρήση στηλών BLOB, με τη χρήση της νέας διεπαφής TriggerPersistenceDelegate, η οποία μπορεί (προαιρετικά) να υλοποιούνται από φορείς υλοποίησης των προσαρμοσμένους τύπους Trigger.
- JDBCJobStore περιλαμβάνει τώρα ένα SybaseDelegate για βελτιωμένη συμβατότητα με Sybase
- Cron εκφράσεις υποστηρίζουν τώρα τη δυνατότητα να καθορίσετε μια μετατόπιση για "τελευταία ημέρα του μήνα" και "τελευταία ημέρα της εβδομάδας του μήνα" εκφράσεις. Για παράδειγμα:. "L-3» (τρεις ημέρες πίσω από το τελευταίο του μήνα) ή "L-3W» (πλησιέστερο ημέρα της εβδομάδας από την ημέρα τριών ημερών πίσω από την τελευταία ημέρα του μήνα)
- Τα αρχεία XML που περιέχει τα δεδομένα του προγραμματισμού έχουν τώρα έναν τρόπο να ορίσετε ξεκινήσει σκανδάλη φορές ως αντισταθμιστικά οφέλη στο μέλλον από τη στιγμή που γίνεται επεξεργασία του αρχείου (χρήσιμο για ωθήσεις που θα πρέπει να αρχίζουν να πυροβολούν κάποια στιγμή μετά ξεκινήσει η εφαρμογή / αναπτυχθεί).
- Από το σχήμα:
- αρχείο σχήματος XML υποστηρίζει πλέον ορίζοντας την ιδιότητα «προτεραιότητα» της ενεργοποίησης.
- QuartzInitializerListener (και QuartzInitializerServlet) υποστηρίζει νέα παράμετρο "περιμένουμε-on-κλείσιμο", το οποίο θα προκαλέσει την Scheduler να περιμένετε για την εκτέλεση εργασίες για να ολοκληρωθεί πριν από το κλείσιμο του, όταν το δοχείο Servlet είναι un-ανάπτυξη της εφαρμογής.
- Προστέθηκε DirectoryScanJob με τις βασικές θέσεις εργασίας που έρχονται με χαλαζία, πρόσθεσε επίσης παράμετρο της ελάχιστης ηλικίας σε προϋπάρχοντα FileScanJob.
- Προστέθηκε δυνατότητα να προσθέσετε το ServletContext στο SchedulerContext όταν χρησιμοποιούν QuartzInitializerListener ή QuartzInitializerServlet να προετοιμαστεί Quartz μέσα σε μια web εφαρμογή Java EE.
- Διάφορα:
- Διάφορες βελτιώσεις στην απόδοση, συμπεριλαμβανομένων (αλλά δεν περιορίζονται σε):
- Δυνατότητα να ενεργοποιεί παρτίδα αποκτούν τα οποία είναι έτοιμα να απολυθούν, η οποία μπορεί να προσφέρει βελτιώσεις στην απόδοση για πολύ απασχολημένος προγραμματιστές
- Οι μέθοδοι για την προσθήκη παρτίδα / αφαίρεση των θέσεων εργασίας και σκανδάλες (βλέπε "Νέες δυνατότητες")
- εναύσματα έχουν μια νέα επιλογή εντολή διάλειψη, MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, το οποίο μπορεί να είναι χρήσιμο εάν δεν χρειάζονται διακοπτόμενης λειτουργίας χειρισμού σκανδάλη (ες) σας, και θέλουν να επωφεληθούν από ένα κέρδος απόδοσης
- Διάφορες διορθώσεις σφαλμάτων, για τον πλήρη κατάλογο δείτε τις σημειώσεις έκδοσης από Jira: https://jira.terracotta.org/jira/secure/ReleaseNote.jspa?projectId=10282&version=10842
- DBCP δεν χρησιμοποιούνται πλέον για τη συγκέντρωση συνδέσεων βάσης δεδομένων, C3PO χρησιμοποιείται αντ 'αυτού.
- υλοποιήσεις JobFactory τώρα ξεκινά (πέρασε) μια λαβή στο Scheduler.
- Όλα τα παραδείγματα συσκευάζονται σε; παραδείγματα; κατάλογο της διανομής χαλαζία έχουν ενημερωθεί για να κάνουν χρήση του (αποδείξει) το νέο API για τον καθορισμό των θέσεων εργασίας και εναύσματα.
Οι
Τι είναι καινούργιο στην έκδοση 1.6.6:
- μερικές σημαντικές διορθώσεις σφαλμάτων
- ένα ζευγάρι μικρές βελτιώσεις
Απαιτήσεις :
- Java 2 Standard Edition Runtime Environment
Τα σχόλια δεν βρέθηκε