Download - mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Transcript
Page 1: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

mgr inż. Michał Paluch

Page 2: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Technologie JAVA

Java Platform Standard Edition JSE

Java Platform Enterprise Edition JEE

Java Platform Micro Edition

Wersje

Różnice

mgr inż. Michał Paluch

Page 3: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Java Enterprise Edition

mgr inż. Michał Paluch

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

Page 4: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Struktura warstwowa JEE

Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

mgr inż. Michał Paluch

Page 5: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Komponenty w JEE

Aplikacje klienckie i aplety

Komponenty technologii Java Servlet,

JSF, JSP

EJB

mgr inż. Michał Paluch

Page 6: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Klienci JEE

Klient przeglądarkowy

Aplikacje klienckie

Aplety

mgr inż. Michał Paluch

Page 7: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Komunikacja z serwerem JEE

mgr inż. Michał Paluch

Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

Page 8: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Komponenty Webowe

mgr inż. Michał Paluch

Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

Page 9: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Komponenty Biznesowe oraz

Warstwa Danych

mgr inż. Michał Paluch

Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

Page 10: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Kontenery JEE

Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

mgr inż. Michał Paluch

Page 11: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Budowanie i wdrażanie aplikacji

Źródło: http://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html

mgr inż. Michał Paluch

Page 12: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 13: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Przykład żądania wysłanego

protokołem SOAP

<?xml version="1.0"?>

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-

envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-

encoding">

<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

Page 14: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Przykład odpowiedzi

<?xml version="1.0"?>

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-

envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-

encoding">

<soap:Body xmlns:d=„test">

<d:divideResponse>

<d:val1>2</d:val1>

</d:divideResponse>

</soap:Body>

</soap:Envelope>

mgr inż. Michał Paluch

Page 15: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

WSDL

Web Services Description Language

mgr inż. Michał Paluch

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>

Page 16: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 17: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Typy komponentów EJB

Sesyjne:

- bezstanowe,

- stanowe,

- singleton;

sterowane komunikatami (message-driven)

mgr inż. Michał Paluch

Page 18: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 19: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 20: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 21: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 22: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Komponent EJB

Składa się z:

- Klasy implementującej funkcjonalność

- Interfejsu biznesowego

- Remote

- Local

- Opcjonalnych deskryptorów

mgr inż. Michał Paluch

Page 23: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Transakcje w JEE

Czym jest transakcja?

Cechy transakcji.

Rodzaje transakcji:

- Zarządzane przez komponent

- Zarządzane przez kontener

mgr inż. Michał Paluch

Page 24: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Atrybuty Transakcji

Required

RequiresNew,

Mandatory,

NotSupported,

Supports,

Never

mgr inż. Michał Paluch

Page 25: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

mgr inż. Michał Paluch

Page 26: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 27: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

„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

Page 28: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

„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

Page 29: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 30: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Architektura

Spring Framework

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 31: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Inversion of Control (IoC)

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 32: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Wstrzykiwanie zależności

Przykład

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 33: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Przykład 2

Wstrzykiwanie przez konstruktor

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 34: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Przykład 3

Setter injection

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 35: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Przykład 4

Wstrzykiwanie przez referencję

mgr inż. Michał Paluch

Źródło: http://www.springbyexample.org/examples

Page 36: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 37: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 38: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 39: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Deklaracja aspektu oraz punktu

przecięcia

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 40: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Deklaracja rady

Źródło: http://www.springbyexample.org/examples

mgr inż. Michał Paluch

Page 41: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 42: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 43: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Praktyczny przykład cz.3

public class Seans {

ObslugaKina pracuj = new ObslugaKina();

public void start()

{

pracuj.uruchomProjektor();

}

}

mgr inż. Michał Paluch

Page 44: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 45: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Fabryki komponentów

Dostarczają mechanizm zarządzania

cyklem życia komponentu

- InitializingBean

- DisposableBean

Oferują dwa tryby tworzenia

komponentów:

- singleton

- prototype

mgr inż. Michał Paluch

Page 46: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

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

Page 48: mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje webowe lub oddzielne aplikacje klienckie. W tym przypadku klienci nie muszą znajdować

Dziękuję za uwagę

mgr inż. Michał Paluch