przegląd technologii j2ee

Post on 11-Jan-2016

47 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Przegląd technologii J2EE. Jakub Kostynowicz Kamil Rembalski. Struktura J2EE. Aplety (Applets). Programy java działające po stronie klienta. Wykorzystują maszynę wirtualną zawarta w przeglądarce. Przegladarka wywołuje kolejno metody init(), start(), stop(), destroy(). Aplety (Applets). - PowerPoint PPT Presentation

TRANSCRIPT

Przegląd technologii J2EE

Jakub Kostynowicz

Kamil Rembalski

Struktura J2EE

Aplety (Applets)

• Programy java działające po stronie klienta.

• Wykorzystują maszynę wirtualną zawarta w przeglądarce.

• Przegladarka wywołuje kolejno metody init(), start(), stop(), destroy()

Aplety (Applets)

• Mogą zawierać klienty sieciowe - Sockety, RMI, CORBA.

• Mogą utrzymywać łączność jedynie z serwerem, z którego zostały pobrane.

• Konkurencja: ActiveX, Macromedia Flash

Serwlety (Servlets)

• Coś podobnego do programów CGI

• Dziedziczą po klasie HttpServlet

• Metody doXXX() wywoływane przez kontener serwletów po otrzymaniu odpowiedniego żądania

• Metody init() i destroy(), inicjujące i niszczące serwlet.

Serwlety (Servlets)

• Klasy HttpServletRequest i HttpServletResponse: dostęp do nagłówków Http, parametramów żądań, cookies, sesji, IP użytkownika wywołującego serwlet oraz metody autentykacji i informacji o rolach użytkownika

Koncept: Deskryptory

• Pliki xml, pozwalające programiście opisać aplikację.

• Przekazywanie parametrów inicjacyjnych dla serwletów, wiązanie serwletów z wzorami zapytań

JSP (?)

Java Server Pages

• Pliki HTML/WML zawierające skryplety - fragmenty kodu w javie.

• Konwertowane (Kompilowane) do postaci serwletów

• Możliwość definiowania własnych bibliotek tagów JSP

• Łatwe korzystanie z JavaBeans

Koncept: Kontrolery

• Centralny serwlet przechwytujacy wszystkie żądania.

• W zależności od żądania (akcji) wywołuje odpowiedni Handler, obsługujacy dane zdarzenie.

• Mapy zdarzenie-handler przechowywane są w plikach konfiguracyjnych.

Technologia pomocnicza: Struts

• Gotowe wzorce kontrolera

• Usystematyzowany schemat aplikacji

• Bogata bilblioteka tagów JSP, upraszczająca tworzenie formularzy, iterowanie po listach czy choćby generowanie linków.

Java API for XML Parsing

• Umożliwia pracę z danymi zapisanymi w XML'u za pomocą:

• parsera - SAX

• modelu danych - DOM

• transformacji - XSLT

SAX

• Umożliwia proste parsowanie dokumentów XML za pomocą parsera opartego na obsłudze zdarzeń. Parserowi podczepiamy napisaną przez nas klasę o odpowiednim interfejsie. Podczas parsowania parser będzie wywoływał opowiednie metody tej klasy.

• Zdarzenia: startDocument, startElement, characters, endElement, endDocument

DOM (Document Object Model)

• Podstawową wadą SAX'a jest sekwencyjny dostęp, DOM eliminuje tą wadę

• DOM jest to zbiór interfejsów, które odwzorowują strukturę dokumentu XML. Podstawowe interfejsy to Document, Element i Node. Obiekty tych interfejsów tworzą drzewo, które również nazywa się DOM'em.

XSLT (XML Stylesheet Language Transformations)

• Java API for XSLT- umożliwia transformowanie dokumentów XML za pomocą arkuszy XSL w sposób zgodny ze specyfikacją XSLT, zdefiniowaną przez W3C.

• Pozwala na prezentacje danych zawartych w dokumencie XML przy pomocy arkusza XLS

Technologia pomocnicza: Ant

• „Małe narzędzie do dużych zadań”

• Skrypty w postaci plików xml, pozwalające kompilować nawet najbardziej złożone aplikacje.

• Zupełne uwolnienie się od środowisk IDE.

• Nie ma potrzeby pisania skryptów do każdej aplikacji.

Co potrafi mrówka?

• Kompilować klasy Java, pliki JSP

• Czytać pliki konfiguracyjne .properties

• Kopiować, kasować, zmieniać nazwy plików.

• Zarządzać wersjami buildów.

• Komunikować się z CVS

• Pakować programy do postaci plików .jar

BEA Weblogic 8.1

• Serwer aplikacji J2EE

• Wszystkie technologię powiązane z J2EE

• Własna maszyna wirtualna JRockit

• Własne sterowniki JDBC

• Pomost JCOM

• Pomost Tuxedo

JDBC (?)

JDBC

• API pozwalające komunikować się z bazami danych.

• Każdy producent pisze sterownik JDBC do własnej bazy danych.

• Możliwość wykonywania zapytań SQL i przeglądania wyników.

• Pule połaczeń.

JNDI (?)

Java Naming and Directory Interface

• Odpowiednik Naming Service z CORBA.

• Możliwość wiązania obiektów z nazwami, tworzenia podkontekstów w postaci drzewa.

• Możliwość podłączenia do LDAP

• Większość serwerów aplikacji oferuje własne JNDI.

JDBC 2

• Pakiet javax.sql

• klasa DataSource - fabryka połaczeń z bazą danych, powiązana z nazwą w JNDI.

• Pule połaczeń.

• Multipule - zbiory pul połaczeń, możliwość tworzenia pul zapasowych lub pobierania danych z kilku źródeł.

EJB (?)

Enterprise Java Beans

Co to jest java bean?

Można powiedzieć, że jest to klasa (obiekt klasy) napisana w sposób zgodny z pewnym standardem, przez co mogą nią zarządzać programy. Zgodnie z zaleceniami, komponent JavaBean powinien mieć metody setXXX / getXXX dla każdego atrybutu.

Bean nie znaczy fasola! Nazwa „Java” pochodzi od nazwy gatunku kawy, a „coffee bean” oznacza ziarno kawy. JavaBean raczej nie znaczy „fasolki javy”.

Enterprise Java Beans

• Gotowy wzorzec obiektowej warstwy logiki biznesowej.

• Ustandaryzowany sposób komunikacji z bazami danych

• Dostęp do Obiektów logiki biznesowej przez RMI-IIOP i JNDI

EJB - jak to działa?

• Generuje kod obiektuEJB - odpowiednika szkieletu z CORBA.

• Zarządza istniejącymi ziarnami, wywołując na nich metody.• Może zapewniać trwałość ziaren.

Większość rzeczy robi za nas kontener EJB.

EJB - co musimy napisać

• Klasa ziarna - własciwa implementacja logiki biznesowej. Klasa ta zaweira wszystkie atrybuty i implementacje metod.

• Remote interface - zbiór metod dostępnych zdalnie.

• Local interface - zbiór metod dostepnych lokanie• Home interfaces - zbiór metod klasy, używanych

do tworzenia/ znajdywania ziaren.

EJB - rodzaje ziaren

Ile mamy rodzajów ziaren EJB?

EJB - rodzaje ziaren

• Session bean - świadczy usługi klientom. Reprezentuje raczej procesy niż dane. Są ziarna sesyjne posiadające stan i nie posiadające stanu.

• Entity bean - reprezentuje obiekty logiki biznesowej. Dzielą się na ziarna CMP i BMP.

• Message driven bean - ziarno obsługiwane przez JMS - o tym później.

Stateless Session Beans

• Ziarna nie posiadające stanu - pamietają dane na czas wywołania metody.

• Kontener może bardzo łatwo tworzyć pule takich ziaren.

• Przykład: ziarno kompresujace dane.

Statefull session beans

• Ziarna posiadające stan.• Kontener buduje pule ziaren zapamiętywując ich

stan. Ziarno jest więc usypiane (pasywowane) i budzone (aktywowane) jako zupełnie inne ziarno.

• Należy uważać, jeśli zapamiętuje się stan ziarna np. w bazie danych. Jeśli w międzyczasie wystapi awaria kontenera, dane nie zostaną usunięte.

• Przykład: wózek sklepowy.

Entity beans

• Ziarna o trwałym stanie.• Posiadają klasy kluczy głównych.• Kontener tworzy pule tych ziaren aktywując

je i pasywując.• Ich interfejsy Home posiadaja metody

findByXXX(), pozwalające wyszukiwać ziarna.

• Przykład: Pracownik.

Entity beans: BMP / CMP

BMP / CMP (?)

Entity beans: BMP

• Używając JDBC, sami piszemy metody pobierające stan ziarna z bazy danych, zapisujące ten stan oraz metody pozwalające wyszukiwać ziarna.

• Sami obsługujemy relacje miedzy ziarnami - trzeba albo wczytać cały graf obiektów (aggresive loading), albo w metodach getXXX() i setXXX() znaleźć te obiekty (lazy loading)

• Dużo pisania...

Bean managed persistance

Entity Beans: CMP

• Kontener dba o zachowanie trwałości ziarna. Nie musimy pisać metod Load(), Store() itp.

• Nie musimy pisać metod typu findByXXX(), jedynie zadeklarować je w interfejsie Home.

• Kod jest dzięki temu kilkakrotnie krótszy, i nie musimy pisać ani jednej linijki SQL.

Container managed persistance

Entity Beans: CMP

Container managed persistance

Jest w deskryptorze.

Deskryptor zawiera nazwy pól z bazy danych odpowiadające atrybutom ziarna oraz deklaracje asocjacji miedzy ziarnami, dzieki czemu jest w stanie wygenerować odpowiednie inserty i update’y.

Jednak skąd kontener miałby wiedzieć, co oznacza findBiggerThen (int i) czy findByColor(String color) ? Jak generuje odpowiednie zapytania?

Entity Beans: CMP

EJB-QLJęzyk zapytań na Entity Beans’ach. Posiada większość konstrukcji znanych z języka sql oraz możliwość trawersowania pól obiektów. Zapytania ejb-ql zapisywane są w deskryptorach, jako opisy metod findXXX() dla kontenera. Przykład:

SELECT OBJECT(a) AS a FROM StudentBean WHERE student.dataUrodzenia.miesiąc = 5

XDoclet

• Dość nowa technologia.

• Jej twórcy twierdzą, że jest w stanie wygenerować do 83% kodu.

• Jest to gruba przesada, ale tak czy inaczej jest to mocne narzędzie.

• Wcześniejsze rozwiązania: programy typu Middlegen.

XDoclet - jak to działa

• W kodzie umieszczamy komentarze z odpowiednimi oznaczeniami, podobnymi do parametrów javadoc.

• Na podstawie tych oznaczeń XDoclet generuje za nas „głupi kod” - wszyskie interfejsy ejb, deskryptory ejb oraz deskryptory dla wiekszości kontenerów EJB.

• Współpracuje z technologią ant.

Zostawmy na momencik EJB-ki...

JMS (?)

Java Messaging Service

• API do łatwego, niezawodnego przesyłania danych. Dane przesyłane są w postaci „wiadomości”.

• Do wiadomości można dopisywać obiekty i typy proste (klucz-wartość).

• Istnieja dwa modele wysyłania wiadomości: point-to-point, gdzie wiadomośc wysyłana jest do konkretnego klienta, oraz publish/subscribe, gdzie wiadomość wysyłana jest do wszystkich klientów zarejestrowanych w temacie (topic)

EJB - message driven beans

• Ziarna, dostępne przez JMS.• Jest to w zasadzie asynchroniczne wołanie

metod.• JMS jest szybsze niż RMI-IIOP czy CORBA.• Najprostszy model ziaren.• Dużo problemów z bezpieczeństwem, load-

balancingiem i transakcjami.

EJB - Message driven beans.

Ze względu na złożoność JMS oraz fakt, że chodzi tu w zasadzie o asynchroniczne wołanie metod, ten rodzaj ziaren prawdopodobnie zostanie zastapiony ziarnami typu Asynchronicznego albo po prostu nowym interfejsem w ziarnach sesyjnych. Będzie tak, gdy specyfikacja EJB uwzględni asynchroniczne RMI. Póki co nie ma jednak niczego na ich miejsce, a programisci musza pisać ogromne ify żeby dowiedzieć się, o co w ogóle chodzi w danej wiadomości.

import javax.naming.*; public class EJBClient {  public static void main (String[] argv) {   // get the JNDI naming context   Context initialCtx = new InitialContext ();   // use the context to lookup the EJB Home interface   AccountHome home=(AccountHome)initialCtx.lookup("Account");   // use the Home Interface to create a Session Bean object   Account account = home.create (1234, "Athul", 1000225.28d);   // invoke business methods   account.credit (1000001.55d);   // remove the object   account.remove ();  } }

Sesja Enterprise JavaBean od strony klienta

JTA- (?)

Java Trasnaction API

Java Trasnaction API• Zarządca transakcji (ang. transaction manager) dostarcza funkcje i usługi wymagane do wyznaczania początku i końca transakcji, transakcyjnego zarządzania zasobami i synchronizacji

• Serwer aplikacji (ang. application server) stanowi środowisko uruchomieniowe dla aplikacji z uwzględnieniem zarządzania stanem transakcji (np. serwer EJB)

• Zarządca zasobów (ang. resource manager) umożliwia aplikacjom dostęp do zasobów. Aplikacje łączą się z zarządcą zasobów poprzez dedykowaną bibliotekę programową. Przykładem zarządców zasobów są serwery relacyjnych baz danych (komunikacja przez odpowiedni sterownik JDBC) lub serwery zarządzania komunikatami (dostępne poprzez interfejs Java Message Service - JMS)

• Transakcyjna aplikacja (np. składajaca się z wielu EJB) powierza zarządzanie transakcjami serwerowi aplikacji

• Zarządca komunikacji (ang. communication resource manager) umożliwia współpracę zarządców transakcji poprzez przekazywanie kontekstu transakcji

Java Trasnaction API

• Transakcje dla ziaren EJB:

• declarative - deklarujemy transakcje dla każdej metody w deskryptorze

• programative - sami wywołujemy metody begin() i commit()

• client-initiated - transakcje zaprogramowane w kodzie klienta

JAAS (?)

Java Authorization and Authentication Service

API to miało być bardzo uniwersalne, gotowe do podłączenia do dowolnego systemu odpowiedzialnego za bezpieczeństwo.

Java Authorization and Authentication Service

API to miało być bardzo uniwersalne, gotowe do podłączenia do dowolnego systemu odpowiedzialnego za bezpieczeństwo.

Cel został osiągnięty....

Java Authorization and Authentication Service

Jest to typowy przykład fragmentu programu, który wystarczy napisac raz, a potem stosować do woli w wielu aplikacjach.

Wiekszość rzeczy robi za nas serwer aplikacji: my piszemy tylko klienta, moduł logowania i obiekt akcji.

Serwer aplikacji powinien zapewniać obsługe ról, przechowywanie haseł, loginów. Nasza rola podczas pisania modułu logowania ogranicza się do skorzystania z narzędzi dostarczonych z serwerem.

Connector architecture

Connector architecture•Podstawowym problemem przy tworzeniu aplikacji rozproszonych jest to, że zazwyczaj działają w heterogenicznym środowisku.

•Istnieje problem integracji aplikacji J2EE z istniejącymi systemami, nie przystosowanymi do specyfikacji J2EE.

•J2EE Connector Architecture - Architektura standardowego sposobu komunikacji z systemami EIS nie napisanymi w języku Java

EIS -Enterprise Information System, najczęściej systemy typu ERP (Enterprice Resource Planning) takie jak SAP R/3

•Komunikacja odbywa się wyłącznie poprzez adaptery zasobów (resource adapters).

•Jeden adapter umożliwia korzystanie z systemu EIS wielu różnym komponentom EJB.

•Architektura J2EECA definiuje standardowe API, które narzuca szkielet adaptera nie definiując jego metod - umożliwia tworzenie adapterów do wielu różnorodnych systemów.

Connector architecture

Serwery aplikacji i adaptery zasobów są oparte na technice Kontraktów.

Adapter realizuje 2 rodzaje kontraktów:

• Kontrakty aplikacji (Application Contract)– definiujące API, poprzez które komponenty takie jak EJB komunikują się z systemami EIS

• Kontrakty systemowe (System Contract) łączą adapter zasobów z usługami zarządzanymi przez serwer J2EE (pule połączeń, transakcje, zarządzanie bezpieczeństwem)

Podsumowanie

Serwer aplikacji Edycja Wersja Release EJBJ2EELicense

J2EECertif. Cena

Art Technology Group

Dynamo Application ServerBEA $495 (basic)

WebLogic $3,000(Premium)

$10,000 (Advantage)

$17,000 (Premium)

Workgroup 7.0 lut-03 2.0 Tak 1.3 $4,000

Server 8.1 Beta 8.1 lut-03 2.0 Tak Darmowa wersja próbna

Borland Appserver Edition 5.2 sty-03 2.0 Tak 1.3 $12,000 CPU

Enterprise Server Web Server 5.2 sty-03 Tak $399 Server

IBM Express 5.0 mar-01 1.1 Tak 1.2 $800 Server

Websphere Standard 5.0 sie-01 2.0 Tak 1.3  $12,000 CPU

Enterprise 5.0 mar-02 2.0 Tak 1.3  $35,000 CPU

IONA $1,495 Dev

Orbix ASP 6.0 $5,000 CPU

$5,000 Dev

$10,000 CPU

$10,000 Dev

$20,000 CPU

Macromedia

JRun Server

Full License v4 4.0 maj-02 2.0  Tak 1.3  $899 CPU

Novell Developer 4.0 wrz-02 2.0 Tak 1.3  $495 Dev

eXteNd Professional 4.0 wrz-02 2.0 Tak 1.3  $5,000 CPU

Enterprise 4.0 wrz-02 2.0 Tak 1.3  $10,000 CPU

Oracle Standard 9.02 mar-02 2.0 Tak 1.2 $10,000 CPU

9i AS Enterprise 9.02 mar-02 2.0 Tak 1.2 $20,000 CPU

Wireless 9.02 mar-02 2.0 Tak 1.2 $10,000 CPU

Personalization Option 9.02 mar-02 2.0 Tak 1.2 $10,000 CPU

Developer

Pre-Release

Persistence

Power Tier for J2EESAP AG

Web Application ServerSun Microsystems

Sun ONEStandard Edition 7.0 paź-02 2.0 Tak 1.3 $2000 CPU

Sybase

EAServer

Trifork Developer 3.2.0 lut-03 2.0 Tak 1.3 $399 Seat

Enterprise Application Server Web 3.2.0 lut-03 2.0 Tak 1.3 $999 CPU

Standard 3.2.0 lut-03 2.0 Tak 1.3 $1500 CPU

Pro 3.2.0 lut-03 2.0 Tak 1.3 $2500 CPU

Enterprise 3.2.0 lut-03 2.0 Tak 1.3 $15,000 CPU

6.0 sie-02 1.2 $15,000 CPU

Express 7.0 kwi-02 Tak

1.1 Tak

Tak

Server 7.0 kwi-02 2.0 Tak 1.3

2.0 Tak 1.3 J2EE Technology 6.0 gru-02

2.0 Tak 1.3Standard 6.0 gru-02

2.0 Tak 1.3 Enterprise 6.0 gru-02

Darmowy2.0  TakDeveloper License v4 4.0 maj-02

cze-02 2.0 Tak

1.3 

$25,000 CPU

1.3 TBA

7.0 sie-01 1.1 Tak 1.2

9.03

Na żądanie6.2 kwi-02 1.1  Tak 1.2 

paź-02 2.0 Tak 1.3 darmowe

Developer 4.12 wrz-02 2.0 Tak 1.3 Darmowy

Platform Edition 7.0

Tak 1.3 $2995 ServerSmall Bus. 4.12 wrz-02 2.0

Tak 1.3 $7500 CPUAdvanced 4.12 wrz-02 2.0

Tak 1.3 $20,000 CPUEnterprise 4.12 wrz-02 2.0

SE

RW

ER

Y A

PL

IKA

CJI Z

GO

DN

E Z

J2EE

top related