Prgramwanie warstwy klienta w aplikacji Java EE Katedra Mikrelektrniki i Technik Infrmatycznych Plitechniki Łódzkiej ul. Wólczanska 221/223 budynek B18, 90-924 Łódź mgr inż. Rbert Ritter
8. Technlgie Java EE Enterprise Integratin Patterns JMS Scheduling Java Mail
Enterprise Integratin Patterns 3 mgr inż. Rbert Ritter, ritter@dmcs.pl Zbiór wzrców prjektwych stswanych w kmercyjnych aplikacjach Wykrzystywane przede wszystkim w aplikacjach klasy enterprise raz message-riented middleware Opisane szczegółw w książce Enterprise Integratin Patterns: Designing, Building, and Deplying Messaging Slutins, Hhpe, Gregr; Bbby Wlf (2003) Zaimplementwane w Spring Integratin raz Apache Camel
JMS 4 mgr inż. Rbert Ritter, ritter@dmcs.pl Java Message Service jest t Java Message Oriented Middleware API d wysyłania wiadmści pmiędzy dwlną ilścią klientów Jest t część Java EE, zdefiniwana w JSR-914, która definiuje spsób twrzenia, wysyłania, trzymywania raz czytania wiadmści Pzwala na bardz luźne pwiązanie kmpnentów całeg systemu zachwując niezawdnść raz asynchrnicznść Dstępne są dwa mdele działania: Pint-t-pint Publish and subscribe jeden lub więcej klientów trzyma wiadmść aby dczytać wiadmść trzeba być pdłącznym, wyjątkiem jest sytuacja durable subscriptin
JMS (2) 5 mgr inż. Rbert Ritter, ritter@dmcs.pl Składa się z następujących elementów: prvider implementacja interfejsu MOM. Występuje jak frma Java JMS lub adapter dla innych języków client prces, który twrzy i dbiera wiadmści prducer/publisher klient JMS, który twrzy i publikuje wiadmści cnsumer/subscriber klient JMS, który dbiera wiadmści message biekt zawierający dane przekazywane pmiędzy klientami queue scena, która zawiera wiadmści czekujące na dczyt przez tylk jedneg klienta. Wiadmści nie muszą być przetwrzne w klejnści wysłania. Klejka gwarantuje, że zstaną przetwrzne tylk raz tpic mechanizm publikwania wiadmści przeznacznych d wielu klientów
Scheduling 6 mgr inż. Rbert Ritter, ritter@dmcs.pl Spring psiada interfejsy TaskExecutr raz TaskScheduler służące d asynchrniczneg wyknywania zadań raz planwania zadań Spring umżliwia również wykrzystanie mechanizmu Timer z JDK 1.3+ raz bibliteki Quartz TaskExecutr jest identyczny z java.util.cncurrent.executr i jeg głównym zadaniem jest ukrycie knfiguracji klas Javy Dstępne są następujące typy TaskExecutr: SimpleAsyncTaskExecutr, SyncTaskExecutr, CncurrentTaskExecutr, SimpleThreadPlTaskExecutr, ThreadPlTaskExecutr, TimerTaskExecutr, WrkManagerTaskExecutr
TaskScheduler 7 mgr inż. Rbert Ritter, ritter@dmcs.pl public interface TaskScheduler { ScheduledFuture schedule(runnable task, Trigger trigger); ScheduledFuture schedule(runnable task, Date starttime); ScheduledFuture scheduleatfixedrate(runnable task, Date starttime, lng perid); ScheduledFuture scheduleatfixedrate(runnable task, lng perid); ScheduledFuture schedulewithfixeddelay(runnable task, Date starttime, lng delay); } ScheduledFuture schedulewithfixeddelay(runnable task, lng delay); Dstępne są dwie implementacje interfejsu Trigger CrnTrigger PeridicTrigger
Quartz 8 mgr inż. Rbert Ritter, ritter@dmcs.pl Śrdwisk uruchmieniwe zintegrwane z inną aplikacją uruchminy na serwerze aplikacyjnym i krzystać z transakcji XA uruchminy jak ddzielny prces i krzystać z RMI klaster ddzielnych prcesów Quartz Zarządzanie zadaniami kreślnym czasie, w kreślne dni tygdnia, w kreślne dni miesiąca, kreślnych dniach w rku, z pminięciem kreślnych dat, peridycznie: kreślną ilść razy, aż d daty, bez graniczeń, z późnieniem
Quartz (2) 9 mgr inż. Rbert Ritter, ritter@dmcs.pl Wyknywanie zadań dwlna klasa Javy implementująca Jb instancje zarządzane przez Quartz lub aplikację pwiadamiane są listenery przed i p wyknaniu zadania zadania zwracają JbCmpletinCde, które mże być wykrzystane d uruchmienia klejnych zadań Zapisywanie zadań RAMJbStre raz JDBCJbStre mgą zstać użyte d zapisania zadań Transakcje mże krzystać z transakcji JTA przez JbStreCMT mże zarządzać transakcjami JTA (begin, cmmit) Klastrwanie Fail-ver, lad balancing, rzszerzenie dla Terracta
Quartz (3) 10 mgr inż. Rbert Ritter, ritter@dmcs.pl Field Name Mandatry Allwed Values Secnds YES 0-59, - * / Minutes YES 0-59, - * / Hurs YES 0-23, - * / Allwed Special Characters Day f mnth YES 1-31, - *? / L W Mnth YES 1-12 r JAN- DEC Day f week YES 1-7 r SUN- SAT Year NO empty, 1970-2099, - * /, - *? / L #, - * /
Spring Email 11 mgr inż. Rbert Ritter, ritter@dmcs.pl Spring udstępnia klasy ułatwiające wysyłanie wiadmści email bez dwływania się d niskpzimweg API Centralnym interfejsem jest rg.springframewrk.mail.mailsender, klasa przedstawiająca pdstawwą wiadmść t SimpleMailMessage Mżna wysyłać wiadmści z załącznikami raz zasbami inline Interfejs rg.springframewrk.mail.javamail.javamailsender ddaje mżliwść utwrzenia nagłówków MIME w wiadmści raz udstępnia interfejs MimeMessagePreparatr d przygtwywania teg typu wiadmści Zależy d bibliteki JavaMail raz JAF (Java Activatin Framewrk) jeśli krzystamy z wersji Javy starszej niż 6
Spring Email (2) 12 mgr inż. Rbert Ritter, ritter@dmcs.pl Przykład Basic MailSender raz SimpleMailMessage Przykład JavaMailSender raz MimeMessagePreparatr Przykład MimeMessageHelper wysyłanie załączników wysyłanie zasbów inline Krzystanie z szablnów email Velcity Freemarker