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

Podobne dokumenty