Wykład - Wprowadzenie do Java EE i Spring
Transkrypt
Wykład - Wprowadzenie do Java EE i Spring
mgr inż. Michał Paluch Technologie JAVA Java Platform Standard Edition JSE Java Platform Enterprise Edition JEE Java Platform Micro Edition Wersje Różnice mgr inż. Michał Paluch Java Enterprise Edition Java EE to platforma umożliwiająca tworzenie oraz uruchamiania rozproszonych aplikacji wielowarstwowych, wykorzystywanych w Internecie Java EE składa się z: – zbioru bibliotek standardowych – zbioru zasad projektowania, implementowania i instalowania aplikacji Java EE – serwera aplikacji Java EE, stanowiący środowisko uruchomieniowe dla aplikacji Java EE mgr inż. Michał Paluch Struktura warstwowa JEE Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html mgr inż. Michał Paluch Komponenty w JEE Aplikacje klienckie i aplety Komponenty technologii Java Servlet, JSF, JSP EJB mgr inż. Michał Paluch Klienci JEE Klient przeglądarkowy Aplikacje klienckie Aplety mgr inż. Michał Paluch Komunikacja z serwerem JEE Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html mgr inż. Michał Paluch Komponenty Webowe Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html mgr inż. Michał Paluch Komponenty Biznesowe oraz Warstwa Danych Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html mgr inż. Michał Paluch Kontenery JEE Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html mgr inż. Michał Paluch Budowanie i wdrażanie aplikacji Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html mgr inż. Michał Paluch SOAP Simple Object Access Protocol Oparty na XML, protokół komunikacyjny Struktura komunikatu składa się z: - <Envelope> - <Header> - <Body> - <Fault> Tryby wywołań - RPC - dokumentowy mgr inż. Michał Paluch Przykład żądania wysłanego protokołem SOAP <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingStyle="http://www.w3.org/2001/12/soapencoding"> <soap:Body xmlns:d=„test"> <d:divide> <d:val1>4</d:val1> <d:val2>2</d:val2> </d:divide> </soap:Body> </soap:Envelope> mgr inż. Michał Paluch Przykład odpowiedzi <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingStyle="http://www.w3.org/2001/12/soapencoding"> <soap:Body xmlns:d=„test"> <d:divideResponse> <d:val1>2</d:val1> </d:divideResponse> </soap:Body> </soap:Envelope> mgr inż. Michał Paluch WSDL Web Services Description Language Służy do opisywania usług sieciowych Struktura dokumentu: <d e f i n i t i o n s> <t y p e s>. . . . . . . . . .</ t y p e s> <mes s a ge>. . . . . . . . . .</ mes s a ge> <p o r tTy pe>. . . . . . . . . .</ p o r tTy pe> <b i n d i n g>. . . . . . . . . .</ b i n d i n g> </ d e f i n i t i o n s> mgr inż. Michał Paluch EJB Enterprise JavaBeans Komponenty zarządzane przez kontener serwera aplikacji Realizują logikę biznesową aplikacji Są wykorzystywane do budowy złożonych aplikacji Obsługują lokalnych i zdalnych klientów Klientami mogą być zarówno aplikacje jak serwlety, strony JSP… mgr inż. Michał Paluch Typy komponentów EJB Sesyjne: - bezstanowe, - stanowe, - singleton; sterowane komunikatami (message-driven) mgr inż. Michał Paluch Sesyjny komponent EJB Posiada odpowiednią adnotację Posiada publiczny, bezparametrowy konstruktor Klasa jest publiczna i nie może być abstrakcyjna ani finalna, Klasa nie jest abstrakcyjna, ani finalna Implementuje metody biznesowe, mgr inż. Michał Paluch Przykład Komponentu Sesyjnego (min. 2 pliki) package com.my.lecture; import javax.ejb.LocalBean; import javax.ejb.Stateless; @Stateless @LocalBean public class Calc implements CalculatorRemote, CalculatorLocal { public float add(int a, int b) { return a + b; } public float subtract(int a, int b) { return a - b; } } public interface CalculatorLocal { public float add(int a, int b); public float subtract(int a, int b); } mgr inż. Michał Paluch Komponent sterowane komunikatami Nie posiadają stanu Wykorzystują Java Message Service (JMS) Składa się wyłącznie z klasy beana Umożliwia asynchroniczne przetwarzanie komunikatów mgr inż. Michał Paluch Interfejsy EJB Sesyjne EJB mogą udostępniać dwa rodzaje interfejsów: - Lokalny, który może zostać zadeklarowany jako interfejs Javy lub być w postaci publicznej metody implementacji EJB. Klienci w takim wypadku muszą znajdować się na tej samej maszynie - Zdalny, mogą z niego korzystać inne komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować się na tej samej maszynie mgr inż. Michał Paluch Komponent EJB Składa się z: - Klasy implementującej funkcjonalność - Interfejsu biznesowego - Remote - Local - Opcjonalnych deskryptorów mgr inż. Michał Paluch Transakcje w JEE Czym jest transakcja? Cechy transakcji. Rodzaje transakcji: - Zarządzane przez komponent - Zarządzane przez kontener mgr inż. Michał Paluch Atrybuty Transakcji Required RequiresNew, Mandatory, NotSupported, Supports, Never mgr inż. Michał Paluch mgr inż. Michał Paluch Czym jest Framework? Zestaw narzędzi, sprawdzonych rozwiązań, szkielet do budowy aplikacji. Definiuje strukturę oraz ogólny mechanizm działania aplikacji. Narzuca przepływ sterowania. Poszczególne komponenty Frameworka są rozszerzalne przez programistę. mgr inż. Michał Paluch „Ciężkie” Frameworki Technologie, których aplikacje wymagają serwera aplikacyjnego jako środowiska do działania. Można do nich zaliczyć m.in.: - Apache Geronimo - JBoss Application Server - JOnAS - Oracle WebLogic Server - IBM Websphere Application Server - Oracle AS mgr inż. Michał Paluch „Lekkie” Frameworki „Mniejsze” wymagania sprzętowe wobec serwera. Możliwość wykonywania testów jednostkowych, bez wdrożenia aplikacji na serwer. Możliwość uruchomienia aplikacji na kontenerze webowym Możliwość wykorzystania frameworka w aplikacjach desktopowych. mgr inż. Michał Paluch Spring Framework Wielowarstwowy szkielet aplikacji Java/Java EE Lekki kontener komponentów JavaBean Obsługa JDBC Integracja z Hibernate Obsługa transakcji Programowanie aspektowego Model MVC Integracja ze Struts Integracja z technologiami szablonów JSP, JSF mgr inż. Michał Paluch Architektura Spring Framework Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Inversion of Control (IoC) Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Wstrzykiwanie zależności Przykład Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Przykład 2 Wstrzykiwanie przez konstruktor Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Przykład 3 Setter injection Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Przykład 4 Wstrzykiwanie przez referencję Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Spring AOP Czym jest aspekt? Celem jest integracja AOP wewnątrz Spring IoC Wywołanie metody jest jedynym punktem złączenia Konfiguracja poprzez kontener mgr inż. Michał Paluch Spring AOP Umożliwia modularyzację kodu na szerszą skalę. Likwidacja nakładających się problemów przekrojowych Aspekty mogą modyfikować zachowanie kodu Podstawowe pojęcia AOP: - aspect – problem przekrojowy - advice – dodatkowa czynność, która zostanie wykonana w punkcie złączenia - join point – punkt w aplikacji w którym zostanie zastosowana rada(advice) mgr inż. Michał Paluch Rodzaje rad w Spring AOP around advice: wykonywany jest przed i po punkcie styku, ma możliwość przerwania przepływu kontroli programu poprzez zwrócenie własnej wartości lub wyjątku, before advice: wykonuje się przed punktem styku, nie może zablokować przepływu kontroli programu, after returning advice: wykonywany jest po poprawnym wykonaniu operacji. throws advice: wykonywany jest w momencie zgłoszenia wyjątku mgr inż. Michał Paluch Deklaracja aspektu oraz punktu przecięcia Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Deklaracja rady Źródło: http://www.springbyexample.org/examples mgr inż. Michał Paluch Praktyczny przykład cz.1 package com.test.spring; public class ObslugaKina { public void zajmijMiejsca() { System.out.println("Obsluga wpuszcza kinomaniakow na sale."); } public void uruchomProjektor() { System.out.println("Obsluga kina uruchamia projektor i przewija reklamy!"); } } mgr inż. Michał Paluch Praktyczny przykład cz.2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="obslugaKina" class="com.test.spring.ObslugaKina"/> <aop:config> <aop:aspect ref="obslugaKina"> <aop:pointcut id="seans" expression="execution(* com.test.spring.Seans.start())"/> <aop:before pointcut="seans" method=zajmijMiejsca()/> </aop:aspect> </aop:config> mgr inż. Michał Paluch Praktyczny przykład cz.3 public class Seans { ObslugaKina pracuj = new ObslugaKina(); public void start() { pracuj.uruchomProjektor(); } } mgr inż. Michał Paluch Fabryki komponentów BeanFactory ApplicationContext – obsługa zdarzeń, komunikatów… ApplicationContext context = new ClassPathXmlApplicationContext("applicati on-config.xml"); ObslugaKina pracuj = (ObslugaKina) context.getBean("obslugaKina"); mgr inż. Michał Paluch Fabryki komponentów Dostarczają mechanizm zarządzania cyklem życia komponentu - InitializingBean - DisposableBean Oferują dwa tryby tworzenia komponentów: - singleton - prototype mgr inż. Michał Paluch Plan kolejnego wykładu Utrwalanie i dostęp do danych z wykorzystaniem Spring Hibernate Zarządzanie transakcjami Spring MVC Spring Web Flow Bezpieczeństwo Obsługa komunikatów w Springu mgr inż. Michał Paluch MATERIAŁY http://docs.oracle.com/javaee/6/tutorial/d oc/bnafd.html http://www.oracle.com/technetwork/java/ javaee/jsp/index.html http://www.tutorialspoint.com/spring/inde x.htm mgr inż. Michał Paluch Dziękuję za uwagę mgr inż. Michał Paluch