mgr inż. Michał Paluch
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
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