Wzorce projektowe w J2EE Jacek Bekier Plan prezentacji Architektura platformy J2EE Definicja wzorca projektowego Katalog wzorców J2EE Omówienie kilku ważniejszych wzorców projektowych Java 2 Enterprise Edition (J2EE) J2EE to platforma tworzenia i uruchamiania rozproszonych aplikacji wielowarstwowych Klientem aplikacji J2EE może być m.in. przeglądarka internetowa lub samodzielna aplikacja W skład J2EE wchodzą: – Zbiór bibliotek i API – Serwer aplikacyjny J2EE, stanowiący środowisko uruchomieniowe dla aplikacji J2EE – Zbiór zasad projektowania, implementowania i instalowania aplikacji J2EE Architektura J2EE Modułowa Rozproszona Wielowarstwowa Klient Warstwa prezentacyjna Warstwa logiki biznesowej Warstwa integracyjna Systemy zewnętrzne Warstwa prezentacyjna Zawiera w sobie wszystkie procedury, potrzebne do obsługi klienta łączącego się z systemem: – przechwytuje i potwierdza żądania klienta – zarządza sesją – kontroluje dostęp do usług warstwy biznesowej – tworzy i dostarcza odpowiedzi do klienta Najczęściej realizowana przez: – Java Server Pages (JSP) – Serwlety Warstwa logiki biznesowej Zapewnia usługi biznesowe wymagane przez system. Zawiera dane i procedury biznesowe. Najczęściej realizowana przez: – Enterprise JavaBeans (EJB) Warstwa integracyjna Warstwa integracyjna jest odpowiedzialna za komunikację z zasobami zewnętrznymi oraz z systemami przechowywania danych. Najczęściej realizowana przez: – Java Database Connectivity API (JDBC) – Java Message Service (JMS) Wzorzec projektowy - definicja Wzorce projektowe (Design Patterns) to zidentyfikowane i opisane typowe schematy postępowania podczas rozwiązywania problemów powtarzalnych. Rozwiązanie pewnego problemu w pewnym kontekście. Wzorce projektowe dla J2EE Najpopularniejsze wzorce projektowe J2EE zostały opracowane przez Sun Java Center: Intercepting Filter, Front Controller, Context Object, Application Controller, View Helper, Composite View, Business Delegate, Service Locator, Session Facade, Application Service, Transfer Object, Value List Handler, Data Access Object, Service Activator, Web Service Broker, itd. Klasyfikacja wzorców projektowych – wzorce warstwy prezentacyjnej – wzorce warstwy logiki biznesowej – wzorce warstwy integracyjnej Diagram relacji wzorców J2EE Intercepting Filter Wzorzec warstwy prezentacyjnej Przechwytuje i modyfikuje żądania HTTP przed i po właściwym przetwarzaniu np. w celu wykonania następujących działań: – Sprawdzenie, czy z klientem związana jest poprawna sesja – Sprawdzenie, czy obsługiwany jest dany rodzaj przeglądarki Filtry można dodawać i usuwać w dowolnym momencie, stosując różne ich kombinacje Po zakończeniu przetwarzania, ostatni filtr z grupy przekazuje sterowanie do właściwego obiektu docelowego Typowa implementacja: klasa Java implementująca interfejs javax.servlet.Filter Intercepting Filter Business Delegate Wzorzec warstwy logiki biznesowej Stanowi punkt dostępu do zdalnych usług warstwy biznesowej Zmniejsza zależności między oddzielonymi warstwami Ukrywa szczegóły implementacji usług biznesowych, a także mechanizmy ich wyszukiwania i wywoływania Klienci nie komunikują się bezpośrednio z komponentami EJB, lecz jedynie poprzez Business Delegate Typowe implementacje: klasa Java, biblioteka znaczników Business Delegate Data Access Object Wzorzec warstwy integracji Odpowiada za komunikację z bazą danych, dzięki czemu pozostałe komponenty nie muszą zawierać kodu JDBC specyficznego dla serwera bazy danych Ukrywa całą logikę dostępu do danych związaną z tworzeniem, pobieraniem, usuwaniem i aktualizacją danych z trwałego zbiornika danych Ułatwia migrację do innej bazy danych Typowe implementacje: klasa Java Data Access Object Podsumowanie Stosowanie wzorców projektowych w J2EE służy: uproszczeniu pielęgnacji aplikacji poprawieniu modułowości aplikacji rozdzieleniu ról członków zespołu projektowoprogramistycznego wielokrotnemu wykorzystywaniu komponentów poprawieniu bezpieczeństwa dostępu redukcji intensywności komunikacji sieciowej