mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje...

Post on 01-Mar-2019

216 views 0 download

Transcript of mgr inż. Michał Paluch - Dydaktykacoach.kis.p.lodz.pl/PSOiR-comp.pdf · komponenty EJB, aplikacje...

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

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

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

mgr inż. Michał Paluch

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

Komponenty Webowe

mgr inż. Michał Paluch

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

Komponenty Biznesowe oraz

Warstwa Danych

mgr inż. Michał Paluch

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

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/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

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

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>

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ę

mgr inż. Michał Paluch

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

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

Dziękuję za uwagę

mgr inż. Michał Paluch