Schedulingund Thread-Ausführer



Ähnliche Dokumente
Übung: Verwendung von Java-Threads

Schritte 4. Lesetexte 13. Kosten für ein Girokonto vergleichen. 1. Was passt? Ordnen Sie zu.

Java: Vererbung. Teil 3: super()

Der lokale und verteilte Fall

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Anleitung Typo3-Extension - Raumbuchungssystem

Java Kurs für Anfänger Einheit 5 Methoden

Internet Explorer Version 6

Kostenstellen verwalten. Tipps & Tricks

Software Engineering Klassendiagramme Assoziationen

Benachrichtigungsmöglichkeiten in SMC 2.6

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Einführung in die Programmierung

OutLook 2003 Konfiguration

Anwenderdokumentation AccountPlus GWUPSTAT.EXE

INTERNET UND MMS MIT DEM QTEK2020 MARCO 28. MÄRZ 04

QR-FUNKTION. Informationen über zu erledigende Aufgaben an das Reinigungspersonal senden.

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

GE Capital Equipment Financing. GE Capital Leasing-Tool Schulungsunterlagen

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Professionelle Seminare im Bereich MS-Office

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

FORUM HANDREICHUNG (STAND: AUGUST 2013)

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Updatehinweise für die Version forma 5.5.5

Task: Nmap Skripte ausführen

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

HINWEISE ZUR ARBEIT IM LABOR

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Online bezahlen mit e-rechnung

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Evident VDDS-Anbindung von MIZ

Internet online Update (Internet Explorer)

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Persönliches Adressbuch

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

HSR git und subversion HowTo

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Java Einführung Collections

Was meinen die Leute eigentlich mit: Grexit?

Kurzanweisung für Google Analytics

Patselect Profil: Datenübernahme aus Patselect

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Firewalls für Lexware Info Service konfigurieren

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Es gibt einige Kardinalstellen, an denen sich auf der Festplatte Müll ansammelt: Um einen Großteil davon zu bereinigen.

Zusatzmodul Lagerverwaltung

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

KEIL software. Inhaltsverzeichnis UPDATE. 1. Wichtige Informationen 1.1. Welche Änderungen gibt es?

ClubWebMan Veranstaltungskalender

Tevalo Handbuch v 1.1 vom

Anleitung zur Erstellung und Bearbeitung von Seiten in Typo3. Typo3. Anleitung. Wenpas Informatik

AUF LETZTER SEITE DIESER ANLEITUNG!!!

Partitionieren in Vista und Windows 7/8

Aufruf der Buchungssystems über die Homepage des TC-Bamberg

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Adminer: Installationsanleitung

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer

Installationsanleitung dateiagent Pro

Guide DynDNS und Portforwarding

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

ARCO Software - Anleitung zur Umstellung der MWSt

INSTALLATIONSANLEITUNG

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD.

Anwendungsbeispiele Buchhaltung

Bewerbung für das step21-projekt

RIGGTEK. Dissolution Test Systems. DissoPrep Browser-Interface

Spiel und Spaß im Freien. Arbeitsblat. Arbeitsblatt 1. Zeichnung: Gisela Specht. Diese Vorlage darf für den Unterricht fotokopiert werden.

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einführung in die Java- Programmierung

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Applet Firewall und Freigabe der Objekte

U08 Entwurfsmuster (II)

Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden.

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

Benutzerverwaltung Business- & Company-Paket

Leistungsmessung bei der Elektrizitätsverrechnung

Dokumentation für das Spiel Pong

Serviceanweisung Austausch Globalsign Ausstellerzertifikate

ISA Einrichtung einer DFUE VErbindung - von Marc Grote

Hin zum perfekten Preis

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Anforderungen an die HIS

1. Einführung. 2. Archivierung alter Datensätze

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

So nutzen Sie VOICEMEETING. Vereinbaren Sie mit allen Konferenzteilnehmern den genauen Zeitpunkt, zu dem die Konferenz stattfinden soll.

GeoPilot (Android) die App

Neuer Releasestand Finanzbuchhaltung DAM-EDV E Inhaltsverzeichnis. 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC...

Transkript:

Schedulingund Thread-Ausführer

Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind zum Beispiel: In regelmäßigen Abständen Reports erstellen. Aufräumarbeiten durchführen, wie temporäre Daten löschen. Spring unterstützt direkt zwei Scheduling Technologien: Die einbauten java.util.timer. Das Scheduling-FrameworkQuartz (http://www.opensymphony.com/quartz). 2

Vorteile Quartz gegenüber Timer Die Timer in Java sind relativ einfach, während Quartz eine Menge von Möglichkeiten bietet: Persistenz der Timer. Die Informationen über den Zeitverbleib lassen sich zum Beispiel in einer Datenbank sichern. Gruppen bilden. Quartz kann Gruppen von Jobs bilden und unter einem Namen verwalten. Cron-Jobs. Die unter Unix bekannten Cron-Jobsdefinieren über Strings Wiederholungen, Zeitpunkte, Intervalle. Thread-Pools. Quartz geht performantermit Timern um, da zur Abarbeitung neuer Jobs ein Thread aus einem Pool genommen wird. 3

Was kann Spring? Das Spring-Framework hilft bei Scheduling auf mehreren Ebenen: Der Container ruft automatisch entweder über java.util.timer oder Quartzbeliebige Methoden auf. Die aufgerufen Methoden haben keinen Bezug zu einer Scheduling-Realisierungwie java.util.timer oder Quartz, teilen also eine besondere Schnittstelle. Die Konfiguration ist ähnlich und extern, so dass später beim Austausch nur in der Konfig-Dateieine Änderung nötig ist, aber nicht im Programm. 4

Scheduling mit java.util.timer

Die mitspielenden Klassen Beim Scheduling ist der einfachste Fall, dass Spring von einem Objekt eine bestimmte Methode aufruft. Die MethodInvokingTimerTaskFactoryBean konfiguriert über targetobject das Ziel-Objekt und über targetmethod die aufzurufende Methode. Der ScheduledTimerTask bestimmt für eine konfigurierte Bean die Ausführungsparameter: Einen Verweis auf die Aufgabe (timertask). Nach welcher Wartezeit der Taskbeginnt (delay). Welchen Intervall gibt es (period). Zum Schluss bestimmt eine TimerFactoryBean einer Liste (scheduledtimertasks) der Tasks. 6

Ein Dauerlacher Nehmen wir eine Klasse Dauerlacher an, die eine Methode lache() definiert. package com.tutego.spring.scheduling; public class Dauerlacher { public void lache() { System.out.println( "Hihi" ); } } 7

MethodInvokingTimerTaskFactoryBean <bean id="mytask" class= "org.springframework.scheduling.timer.methodinvokingtimertaskfactorybean"> <property name="targetobject"> <bean class="com.tutego.spring.scheduling.dauerlacher"/> </property> <property name="targetmethod" value="lache" /> </bean> 8

Task-BeschreibungScheduledTimerTask <bean id="myscheduledtask" class="org.springframework.scheduling.timer.scheduledtimertask"> <property name="delay" value="1000" /> <property name="period" value="1000" /> <property name="timertask" ref="mytask" /> </bean> Wann die Abarbeitung beginnt (nach erster Sekunde) In welchem Intervall Wiederholungen (jede Sekunde) 9

TimerFactoryBeanlistet Tasksauf <bean id="timerfactory" class="org.springframework.scheduling.timer.timerfactorybean"> <property name="scheduledtimertasks"> <list> <ref bean="myscheduledtask" /> </list> </property> </bean> 10

Thread-Pooling

TaskExecutorund Java 5 Executor Seit Java 5 gibt es mit dem java.util.concurrent.executor (JSR 166) eine Schnittstelle für Ausführer von Runnable- Objekten. Spring bietet mit dem TaskExecutor die gleiche Schnittstelle. So steht die Funktionalität auch für Java 1.4 und Java 1.3 und auch für Java EE Umgebungen zur Verfügung. «interface» org.springframework.core.task.taskexecutor execute( Runnabletask) : void 12

TaskExecutor-Klassen(1/2) SimpleThreadPoolTaskExecutor Thread-Pooldurch Quartz'sSimpleThreadPool. SimpleAsyncTaskExecutor Erzeugt pro Anfrage einen neuer Thread. Es gibt eine optionale maximale Größe. SyncTaskExecutor Führt Runnable im aktuellen Thread aus. Erzeugt also keinen neuen Thread zur Nebenläufigkeit. ThreadPoolTaskExecutor Geht auf den java.util.concurrent.threadpoolexecutor. Ermöglicht Anpassung der Properties"corePoolSize", "maxpoolsize", "keepaliveseconds", "queuecapacity". 13

TaskExecutor-Klassen(2/2) TimerTaskExecutor Nutzt einen java.util.timer zur Ausführung. Der Runnable wird als TimerTask hintereinander durch den Timer-Threadausgeführt. WorkManagerTaskExecutor Nutzt CommonJWorkManagerals Implementierung. Ermöglicht Ausführung auf Applikationsservern von BEA und IBM. ConcurrentTaskExecutor Ein Wrapperzum java.util.concurrent.executor von Java 5. 14

Beispiel für TaskExecutor public class DoItExecutor { private TaskExecutor executor; public DoItExecutor( TaskExecutor executor ) { this.executor = executor; } public void doit() { Runnable run = new Runnable() { public void run() { System.out.println( Thread.currentThread() ); } }; executor.execute( run ); executor.execute( run ); } } 15

Injizierung vom TaskExecutor <bean id="taskexecutor" class= "org.springframework.scheduling.concurrent.threadpooltaskexecutor"> <property name="corepoolsize" value="5" /> <property name="maxpoolsize" value="10" /> <property name="queuecapacity" value="25" /> </bean> <bean id="doitexecutor" class="doitexecutor"> <constructor-arg ref="taskexecutor" /> </bean> 16

Fehlende Typen aus Java 5 Spring bietet unterschiedliche Implementierungen für den TaskExecutor, aber Java 5 bietet außer execute() im Executor noch mehr. Der java.util.concurrent.threadpoolexecutor implementiert mehr als nur Executor, nämlich ExecutorService. Das bietet awaittermination(), invokeall(), invokeany(), isshutdown(), isterminated(), shutdown(), shutdownnow(), submit() mit weiteren Typen wie Future, Callable. Spring bietet dafür bisher keine Abstraktion! 17