V Konferencja PLOUG
Zakopane
Październik 1999
Oracle JDeveloper Suite 2.0 jako wydajne środowisko
do tworzenia aplikacji intra- i internetowych,
na przykładzie sklepu elektronicznego
Agnieszka Węgrzyn
A.Wegrzyn@iie.pz.zgora.pl
Michał Małecki
M.Malecki@iie.pz.zgora.pl
Politechnika Zielonogórska
Instytut Informatyki i Elektroniki
ul. Podgórna 50, 65-001 Zielona Góra
Streszczenie
W referacie przedstawiono sposób tworzenia aplikacji intra i internetowych, na przykładzie sklepu
elektronicznego z wykorzystaniem pakietu JDeveloper firmy Oracle. Interfejs użytkownika przygotowano
w języku Java w postaci apletu osadzonego na stronie WWW. Umożliwia on użytkownikowi dokonywanie
zakupów sprzętu komputerowego poprzez sieć Internet wraz z obsługą autoryzacji dostępu do konta.
Aplikacja została przygotowana z wykorzystaniem technologii trójwarstwowej. W warstwie serwera
wykorzystano Oracle Application Server, natomiast jako serwer baz danych Oracle 8i. Komunikacja z bazą
danych odbywa się poprzez interfejs JDBC.
2
1 Wprowadzenie
Tworzenie przez przedsiębiorstwa rozproszonych aplikacji obiektowych
wykorzystywanych do prowadzenia biznesu opartego o WWW, wymaga koncentracji na
warstwie pośredniej. Logika biznesu umieszczana jest na serwerach pracujących w
warstwie pośredniej, dzięki czemu przedsiębiorstwa mogą z łatwością dokonywać zmian w
aplikacjach przeznaczonych dla tysięcy klientów - bez konieczności każdorazowego
wykonywania instalacji u wszystkich klientów.
Niestety wzrost ilości warstw tworzonego oprogramowania, wiąże się ze wzrostem
stopnia komplikacji, oraz ze sprostaniem przez programistów unikalnym problemom
pojawiającym się przy wdrażaniu i zarządzaniu tak zbudowanymi aplikacjami.
Do tej pory większość firm korzysta z architektury klient-serwer. Powstanie nowej
technologii intra i internetowej pozwoliło na rozwiązanie problemów z jakimi spotykano
się w architekturze klient-serwer, czyli koniecznością zastosowania bardzo dobrych
komputerów (tzw. "grubych klientów") oraz ceną kosztów administracji i utrzymania
takiego rozwiązania. W architekturze klient-serwer, logika aplikacji umieszczana jest na
kliencie, a baza danych na serwerze, natomiast przy zastosowaniu technologii
internetowej, ciężar zostaje przeniesiony na serwer aplikacji. Na nim umieszczana jest nie
tylko baza danych ale również część logiki biznesowej. W tym trójwarstwowym modelu
na stacjach klienckich uruchamiana jest jedynie przeglądarka WWW ("cienki klient").
2 Architektura
trójwarstwowa
Pojęcie warstw w informatyce jest używane przy opisie rozdziału pomiędzy
logicznymi częściami aplikacji. Występuje ono również przy opisie architektury
klient/serwer. Do niedawna uważano że wystarczą jedynie dwie warstwy. Silne maszyny
klienckie zajmują się zarówno warstwą prezentacyjną (interfejs użytkownika) jak również
przejmują większość obciążenia związanego z przetwarzaniem danych. Rola serwera w
architekturze dwuwarstwowej sprowadza się do serwera bazy danych i serwera plików.
Komunikacja pomiędzy warstwami sprowadza się do wysyłania zapytań SQL ze strony
klienta i zwracania rekordów z danymi z serwera. Takie rozwiązanie, powszechnie
stosowane do dziś niesie niestety wiele ograniczeń, które szczególnie widoczne są przy
budowaniu aplikacji Internetowych. Aplikacje takie charakteryzują się pracą w
środowiskach heterogenicznych, rozproszonych. Wymaga się aby były to rozwiązania
3
skalowalne, wydajne, zapewniały bezpieczeństwo przesyłanych danych oraz łatwo
zarządzane.
Powyższe wymagania można spełnić tylko po wprowadzeniu warstwy trzeciej,
która będzie pośredniczyć pomiędzy „cienkim” klientem, a serwerem bazy danych lub
interfejsem innej aplikacji. Logika aplikacji zostaje przeniesiona na warstwę pośrednią, a
rola klienta sprowadza się do prezentacji interfejsu użytkownika. Sama warstwa pośrednia
nie musi być zaimplementowana w sposób monolityczny. W jej skład może wchodzić
wiele programów funkcjonujących w środowisku heterogenicznym. Możliwe jest więc
tworzenie aplikacji n-warstwowych.
Wśród wielu cech rozszerzających możliwości architektury klient/serwer, poprzez
zastosowanie dodatkowej warstwy, można wyróżnić następujące:
• zmniejszenie obciążenia sieci, poprzez redukcję konwersacją pomiędzy serwerem
bazy danych, a klientem. Aplikacja klienta wywoływać będzie tylko serwisy osadzone
w warstwie pośredniej i oczekiwać na odpowiedzi co znacznie zwiększa wydajność
systemu,
• warstwa pośrednia może być dystrybuowana na wiele serwerów (również
heterogenicznych),
• możliwość dystrybucji warstwy pośredniej na wiele serwerów znakomicie wpływa na
skalowalność systemu oraz pozwala na wykorzystanie baz danych różnych
producentów, pracujących na różnych platformach,
• w przypadku wykorzystania wielu serwerów w warstwie pośredniej możliwe jest
również równoważenie obciążenia (load balancing), oraz zapewnia przejęcie zadań
maszyn, które uległy awarii, przez pozostałe serwery systemu (fault-tolerance),
• enkapsulacja danych – klient wywołuje tylko serwisy, komponenty lub metody
warstwy pośredniej, dzięki czemu mogą one pochodzić z różnych źródeł danych
(zarówno baz danych jak i aplikacji, które potrafią udostępnić odpowiedni interfejs do
komunikacji z serwerem warstwy pośredniej),
• możliwość wielokrotnego wykorzystania komponentów po stronie serwera,
• uproszczona procedura instalacji i modyfikacji aplikacji.
Niestety aplikacje wykorzystujące architekturę pośrednią są droższe od rozwiązań
wykorzystujących architekturę dwuwarstwową. Przed rozpoczęciem prac nad nowym
systemem należy dokonać analizy i wybrać odpowiednie rozwiązanie. Według Gartner
4
Group System, który spełnia jedną z poniższych cech, powinien być tworzony w
architekturze z warstwą pośrednią:
• duża liczba serwisów, komponentów bądź klas aplikacji (ponad 50),
• duże obciążenie systemu – ponad 50 0000 transakcji na dobę lub 300 użytkowników
działających równocześnie,
• więcej niż jedno źródło danych (zwłaszcza heterogeniczne),
• komponenty aplikacji pisane w różnych językach,
• w rachubę wchodzi duża liczba modyfikacji,
• działanie systemu zaplanowane jest na dłużej niż trzy lata.
koszt stworzenia
i utrzymania systemu
czas użytkowania systemu
architektura dwuwarstwowa
architektura trójwarstwowa
Rys 1 Zależność kosztu budowy i utrzymania systemu o architekturze wielowarstwowej od
czasu użytkowania systemu.
3 JDeveloper Suite 2.0
Oracle JDeveloper Suite 2.0 dostarcza kompletny zestaw narzędzi wspomagających
tworzenie testowanie i dystrybucji aplikacji bazodanowych dla Internetu. JDeveloper Suite
zawiera następujące produkty:
• Oracle JDeveloper, wersja 2.0, kompletne narzędzie do tworzenia, testowania i
dystrybucji Javowych aplikacji Internetowych.
• Oracle8i Enterprise Edition w wersji 8.1.5, baza danych klasy Enterprise z wbudowaną
Wirtualną Maszyną Javy (JVM).
• Oracle Aplikacji Serwer, wersja 4.0.7, skalowany, oparty na otwartych standardach
serwer aplikacji służący do uruchamiania biznesowych i komercyjnych aplikacji dla
Web-u.
5
• Oracle Procedure Builder, wersja 6.0, narzędzie do wizualnego tworzenia i testowania
procedur i wyzwalaczy.
• Oracle8i Lite, wersja 3.6.
• Książka o technologii Java: Thinking in Java, Bruce Eckel.
3.1 Oracle
JDeveloper
Oracle JDeveloper, wersja 2.0 jest wizualnym, opartym o komponenty
środowiskiem do tworzenia, testowania i uruchamiania aplikacji bazodanowych dla
Internetu.
Elementy wyróżniające JDeveloper-a:
• Java w bazie danych Oracle 8i - JDeveloper wspiera tworzenie i uruchamianie metod
w języku Java w serwerze bazy danych Oracle 8i. Z narzędziem dostarczeni są
asystenci wspierający tworzenie Java Stored Peocedure, Enterprise JavaBeans i
obiektów CORBA. Środowisko umożliwia projektantowi skupić się nad logiką
aplikacji, zaś samo narzędzie generuje wymaganą logikę komunikacji.
• Enterprise JavaBeans - Zarówno serwer bazy danych Oracle 8i jak i serwer aplikacji
Oracle Application Server zawierają wydajne serwery komponentów Enterprise
JavaBeans. JDeveloper 2.0 wspiera tworzenie i uruchamianie komponentów EJB.
Dzięki zastosowanie EJB możliwe jest tworzenie przenośnych komponentów
pracujących po stronie serwera.
• Obiekty CORBA - Aplikacje wielowarstwowe mają wiele zalet takich jak: lepsza
skalowalność, odporność na awarie i niższe koszty ogólne. Dzięki obiektom CORBA
możliwe jest tworzenie aplikacji wielowarstwowych. Technologia CORBA umożliwia
komunikację pomiędzy obiektami napisanymi przy pomocy różnych języków
programowania. Przykładowo, obiekty zaimplementowane w języka zorientowanych
obiektowo (Java, Smalltalk) mogą się komunikować z obiektami napisanym w
językach nieobiektowych i odwrotnie. JDeveloper Suite ułatwia tworzenie i
uruchamianie obiektów CORBA w języku Java bez konieczności posiadania wiedzy o
programowaniu w standardzie CORBA.
• SQLJ - W trakcie tworzenia aplikacji bazodanowych w języku Java konieczne jest
tworzenie odwołań przy pomocy API JDBC. Zdumiewać nas może liczba linii kodu,
potrzebnych do uzyskania tego co narzędzia klient-serwer potrafią zrobić z użyciem
prostych instrukcji SQL. Z pomocą przychodzi nam SQLJ, dzięki, któremu możemy
6
osadzać instrukcje SQL bezpośrednio w plikach Java. Specyfikacja SQLJ powstała
między innymi dzięki firmie Oracle. Pozwala ona skupić się projektantowi na logice
biznesowej aplikacji.
Rys 2 JDeveloper jest wizualnym narzędziem, pozwalającym programiście na ingerencje w
kod źródłowy bez dodatkowych znaczników.
• InfoBus – kontrolki „świadome danych” - Wraz z pakietem dostarczany jest zestaw
asystentów wspierających tworzenie aplikacji bazodanowych wykorzystujących
„świadome danych” kontrolki. InfoBus, oparte na komponentach Swing. Dzięki tym
komponentom możliwy jest dostęp do danych bez konieczności pisania kodu
wykorzystującego API JDBC.
• Tworzenie Serwletów - JDeveloper ofiarowuje kompletne środowisko do tworzenia
serwletów. Serwlety są przenośnymi klasami Javy, które obsługują wywołania HTTP i
dynamicznie generują strony HTML. Projektant może używać asystentów JDeveloper-
a do generowania serwletów korzystających z informacji zawartych w bazie danych.
Cascading Style Sheets umożliwiają dostosowywanie generowanych serwletów
bazodanowych. JDeveloper stosuje serwlety zgodne ze standardami przemysłowymi i
może umieszczać je na dowolnym serwerze WWW.
7
• Integracja z Oracle Application Server - JDeveloper pozwala przenieść logikę
aplikacji z klienta do warstwy pośredniej. JDeveloper rozmieszcza klasy Javy jako
aplikacje JWeb lub CORBA Objects.
3.2 Oracle Application Server
Firma Oracle dostarcza serwer aplikacji klasy Enterprise: Oracle Application
Server do tworzenia aplikacji wielowarstwowych. Stanowi on integrowane rozwiązanie
łączące w sobie najlepsze elementy technologii serwerów aplikacji wychodząc na przeciw
potrzebom przedsiębiorstw zwracających się w stronę wielowarstwowych, rozproszonych
rozwiązań opartych na Webie.
Rys 3 Ogólna architektura Oracle Application Server
Oracle Application Server to otwarta, oparta na standardach architektura doskonale
nadająca się do tworzenia, i wdrażania nowoczesnych aplikacji dla środowiska Web.
Skalowana, rozproszona architektura i integracja z bazą danych jest podstawą dla
tworzenia wielowarstwowych, rozproszonych aplikacji dla przedsiębiorstw.
8
KLIENT
ORACLE APPLICATION
SERVER
Przeglądarka
JCO Object Factory
Aplet
ORB
ORB
Zarządca zasobów
JCO Server Process
Obiekt
Obiekt
IIOP
IIOP
IIOP
HTTP
Serwer
baz danych
ORACLE
SQL*Net
Rys 4 Architektura serwera aplikacji Webowych
Oracle Application Server jest pierwszym serwerem Webowym, który umożliwia
utrzymywanie trwałych Internetowych sesji pomiędzy przeglądarkami WWW, serwerami
aplikacji i serwerami baz danych w celu prowadzenia transakcji poprzez sieć Internet.
Utrzymywanie trwałych sesji jest niezbędne do prowadzenia bezpiecznych i godnych
zaufania transakcji biznesowych.
Web Request Broker (WRB) jest podstawą serwera aplikacji firmy Oracle. Zajmuje
się on nasłuchiwaniem żądań od przeglądarek i wysyła je do stosownych kartridżów
(moduły oprogramowania). Oracle Application Server obsługuje kartridże PL/SQL,
LiveHTML, PERL oraz Java (Enterprise Java Beans).
Najważniejsze cechy serwera aplikacji firmy Oracle:
• duża skalowalność oraz wydajność,
• bezpieczeństwo korporacyjnych danych,
• oparcie na standardach,
• łatwiejsze zarządzanie aplikacjami w środowisku rozproszonym,
• transakcje w rozproszonym środowisku,
• przenośność pomiędzy platformami,
• łatwe udostępnianie danych w sieci Internet.
9
3.3 Środowisko Oracle 8i
Jeszcze kilka lat temu sieć Internet służyła do umieszczania statycznych witryn,
które stanowiły jedynie reklamę dla firm. Kolejnym etapem rozwoju sieci Internet były
dynamiczne strony WWW, które zwiększały atrakcyjność witryn. Obecnie w sieci tej
umieszczane są również aplikacje WWW pozwalające w znacznie szerszy i łatwiejszy
sposób obsłużyć klienta oraz zwiększyć efektywność i atrakcyjność firmy.
System baz danych Oracle 8i jest środowiskiem do tworzenia i uruchamiania
aplikacji internetowych wykorzystujących zasoby baz danych. W jądro systemu zostało
wbudowanych wiele właściwości internetowych. System ten znacznie upraszcza technikę
budowania aplikacji internetowych, pozwalając projektantowi na wykorzystywanie
bardziej wyrafinowanych elementów.
W wersji systemu Oracle 8i wbudowana została wirtualna maszyna Javy (Java VM),
co sprawiło, że środowisko to jest bardziej elastyczne i przenaszalne między różnymi
platformami i klasami komputerów. Dzięki takiemu rozwiązaniu do aplikacji ma dostęp
każdy, kto posiada przeglądarkę internetową.
System Oracle 8i, dzięki systemowi plików Internet File System (iFS), daje
możliwość przechowywania nie tylko danych tekstowych, ale również stron WWW,
arkuszy kalkulacyjnych, plików zawierających grafikę, czy filmy.
Dzięki wprowadzeniu architektury Oracle 8i, administratorzy mogą w łatwy sposób
zarządzać zasobami firmy. Dane i aplikacje znajdują się na centralnym serwerze, dostęp do
nich jest bardziej ogólny - odbywa się poprzez sieć Internet, a zarządzanie staje się
pewniejsze i bezpieczniejsze.
4 Przykładowa aplikacja – sklep internetowy
4.1 Charakterystyka
aplikacji
Prezentowana aplikacja stanowi jedynie przykład wykorzystania pakietu Oracle
JDeveloper Suite 2.0 w tworzeniu wielowarstwowych aplikacji internetowych. Jest ona
przykładem rozwiązania, tak ostatnio popularnego problemu sprzedaży elektronicznej
przez przedsiębiorstwa.
Jako studium poznawcze wybrano sklep komputerowy proponujący szeroką gamę
sprzętu komputerowego. Użytkownik korzystający z aplikacji musi posiadać jedynie
przeglądarkę internetową, a sama aplikacja jest każdorazowo dynamicznie transportowana
10
do klienta poprzez Internet. Aby dokonać zakupu w sklepie, użytkownik jednorazowo przy
pierwszym uruchomieniu musi zarejestrować się w bazie klientów. Ustala wtedy hasło
dostępowe, wymagane do korzystania każdorazowo z aplikacji.
Po zalogowaniu klient ma możliwość dodawania kolejnych towarów dostępnych w
sklepie, do swego koszyka. Istnieje również funkcja edycji zawartości koszyka, dzięki
której można usuwać z niego wcześniej wybrane towary. Po umieszczeniu przez klienta w
koszyku wybranych towarów, może on podjąć decyzję o zakupie. Wybiera wówczas
funkcję „Kupuje!” i jest proszony o podanie formy płatności. Klient ma możliwość
„kompletowania” zawartości koszyka podczas wielu sesji z aplikacją. Realizacja zakupu
zawartości bieżącego koszyka, powoduje utworzenie pustego, nowego koszyka.
Aplikacja nie jest powiązana z obrotem towarowym firmy, a jedynie służy do
gromadzenia zamówień od klientów. W chwili obecnej aplikacja nie jest wyposażona w
interfejs komunikacyjny z systemami bankowymi klientów, na przykład w celu
sprawdzenia ich zdolności kredytowej przy korzystaniu z kart płatniczych.
Rys 5 Ekran logowania aplikacji Internetowy Sklep Komputerowy
4.2 Wykorzystane
technologie
Do tworzenia aplikacji Internetowy Sklep Elektroniczny zostały wykorzystane
następujące technologie: OAS, CORBA Objects, Serwlety, InfoBus, JDBC/SQLJ,
Enterprise JavaBeans, JavaBeans, które zostały opisane w poprzednich rozdziałach.
11
4.3 Schemat bazy danych - sklep internetowy
Podstawowe informacje w aplikacji Sklep internetowy umieszczone są w trzech
tabelach: towar, zakupy i klient. Szczegóły dotyczące proponowanych towarów (producent,
cena, opis, grupa do jakiej towar jest zaliczany) znajdują się w tabelach: grupy_towarow,
podgrupy_towarow, szczegoly oraz producent. W tabeli klient przechowywane są dane
dotyczące wszystkich klientów, którzy kiedykolwiek zostali zarejestrowani w systemie i
dokonali zakupów. Umieszczone są tam dane zawierające nazwę i hasło danego
użytkownika, rodzaj płatności oraz numer karty kredytowej. Najważniejszą tabelą systemu
jest tabela zakupy, w której zamieszczone są transakcje przeprowadzone przez
użytkowników systemu, czyli jaki i ile towar, i który klient dokonał zakupu. W aplikacji
wykorzystywana jest również tabela zawierająca dane na temat administratorów aplikacji
(administrator). Przechowuje one dane na temat nazw administratorów oraz ich haseł.
ID_GT
NAZWA
ID_PT
NAZWA
ID_GT
Grupy_towarow
Podgrupy_towarow
ID_SZCZEGOLY
CENA
OPIS
ID_T
ID_PRODUCENTA
Szczegoly
ID_KLIENTA
NAZWA
HASLO
NUMER_KARTY
ID_PLATNOSCI
Klient
ID_PLATNOSCI
RODZAJ
Platnosc
ID_ADMIN
NAZWA
HASLO
OPIS
Administrator
ID_PRODUCENTA
NAZWA
GRAFIKA_LOGO
Producent
ID_T
NAZWA
ID_PT
Towar
ID_ZAKUPU
ILOSC
ID_KLIENTA
ID_T
Zakupy
Rys 6 Schemat bazy danych sklep internetowy
5 Podsumowanie
Wykorzystanie środowiska Oracle 8i stwarza nowe możliwość korzystania z
aplikacji dostępnych do tej pory tylko lokalnie, albo też przy zastosowaniu
specjalizowanego oprogramowania. Dzięki nowym rozwiązaniom powstające systemy
informatyczne stają się niezależne od platformy. Aby wykorzystać nawet wyjątkowo
12
wyszukane i złożone oprogramowanie, wystarczy posiadać prosty komputer podłączony do
sieci Internet.
Po stronie klienta niezbędne jest zainstalowanie ogólnodostępnego oprogramowania
umożliwiającego przeglądanie stron WWW. W takim przypadku nie jest wymagane
instalowanie specjalizowanego programu u każdego użytkownika aplikacji. Aplikacja taka
jest ogólnie dostępna, w łatwy sposób można ograniczyć dostęp osobom nieuprawnionym.
Jest ona również łatwiejsza w zarządzaniu. Aplikacje tego typu są wygodniejsze w
użytkowaniu, nie tylko dla administratora, ale również dla użytkowników.
Literatura
1. Banachowski L., Bazy danych. Tworzenie aplikacji, Akademicka Oficyna
Wydawnicza, Warszawa, 1998
2. JDeveloper User’s Guide
3. Oracle Application Server User’s Guide