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