TEMAT CELE ZADANIA

Transkrypt

TEMAT CELE ZADANIA
TEMAT
Bazodanowa usługa typu WEB Service (zwanej dalej WS), wykorzystująca serwery MS SQL
firmy Microsoft , Oracle9iAS Containers for J2EE oraz JDBC i JSP.
Ćwiczenie zakłada znajomość serwera baz danych MS SQL Server oraz podstaw języka SQL,
jak też znajomość tematyki związanej z WS w zakresie będącym przedmiotem poprzednich
ćwiczeń.
CELE
1. Zapoznanie się z mechanizmami komunikacji z bazą danych dostępnymi w języku Java;
przeprowadzenie przy użyciu środowiska Oracle9i JDeveloper procesu implementacji kodu
aplikacji baz danych, obejmującego kolejne etapy:
-uruchomienie lokalnego serwera baz danych,
-przygotowanie i przetestowania poleceń języka SQL, realizujących zadane zapytania,
-implementacja prostej aplikacji języka Java, nawiązującej połączenie z bazą danych i
wykonującą uprzednio przygotowane zapytania oraz przetwarzającej uzyskane
wyniki,
2. Zaimplementowanie usługi WS udostępniającej wynik uruchomionego w poprzednim
punkcie zapytania.
ZADANIA
1. Przygotowanie zapytań SQL
1.1. Uruchomić aplikację Query Analyser i zalogować się korzystając z Windows
Authentication.
1.2. Wybrać bazę Northwind jak bieżącą bazę systemu.
1.3. Zapoznać się z załączonym (Dodatek A) schematem Obiektowo Związkowym bazy
Northwind, szczególnie zaś z tabelkami zawierającymi dane o klientach (Customers)
oraz zamówieniach (Orders).
1.4. Wykonać zapytanie SQL znajdujące wszystkich klientów (Customers).
1.5. Dokonać projekcji ograniczającej uzyskany wynik do pól określających nazwę firmy
(CompanyName) oraz kontaktu (ContactName).
1.6. Ułożyć i przetestować zapytanie znajdujące dla klienta o identyfikatorze
(CustomerID) równym ‘ALFKI’ liczbę złożonych zamówień.
1.7. Ułożyć i przetestować zapytanie SQL znajdujące nazwę firmy, kontakt oraz liczbę
złożonych zamówień, wypisujące wynik malejąco posortowany według tejże liczby.
1.8. Sprawdzić, czy jest zdefiniowane źródło danych ODBC dla bazy Northwind, jeśli nie
to takowe utworzyć. (program odbcad32.exe dostępny też z panelu sterowania,
funkcja dodawania )
2. Aplikacja Java korzystająca z JDBC
2.1. Uruchomić środowisko Oracle9i Jdeveloper i utworzyć nowy projekt.
2.2. Za pomocą polecenia New Class utworzyć klasę Java z metodą main.
2.3. Dodać kod (samodzielnie dodatkowy plus, lub skorzystać z how2) nawiązujący
połączenie za pośrednictwem jdbc z bazą Northwind oraz zaimplementować pętlę
przeglądającą uzyskany zbiór wynikowy. Należy dodać import java.sql.*;
2.4. Umieścić w kodzie zapytanie SQL uzyskane w punkcie 1.7.
2.5. Uruchomić aplikację!
2.6. (Przygotowanie do impl. WS) W miejsce metody main zadeklarować (p. ćw. nr 2)
własną metodę postaci String[]getNBest(int howMany) i umieścić w niej kod uprzednio
znajdujący się w metodzie main. (ew. skorzystać z pliku). Jednocześnie należy
przepisać wynik zapytania SQL, w ten sposób, by był on wynikiem metody getNBest.
Parametr howMany ma określać liczbę wierszy wyniku metody.
3. Aplikacja typu WS
3.1. Korzystając z klasy z poprzedniego punktu wygenerować usługę WS (podobnie jak w
ćw. 2).
3.2. Dokonać instalacji tejże usługi na lokalnym serwerze Oracle9iAS Containers for
J2EE, bacząc przy tym na właściwą konfigurację użytego połączenia. (p. ćw. ćw.
1,2).
3.3. Wygenerować namiastkę (stub/skeleton) klasy, zaopatrzoną w metodę main.
3.4. Dodać do uzyskanej w ten sposób namiastki(stub/skeleton) kod, przeglądający
dwuwymiarową tablicę, stanowiącą wynik wywołania metody getNBest. Za pomocą
standardowej funkcji System.out.println, wypisać wynik na wyjście.
3.5. Uruchomić i przetestować uzyskaną w ten sposób klasę!
4. Przygotować stronę JSP (podobnie jak w ćwiczeniu 1, dotyczącym usługi Google)
implementującą interfejs HTML do usługi WS. W tym celu:
4.1. Za pomocą polecenia new wygenerować stronę JSP (JSP page)
4.2. Dodać kod tworzący egzemplarz namiastki (stub instance), a następnie wywołujący
metodę getNBest. (odnośnie punktów 4.1-4 można posiłkować się załączonym plikiem
untitled1.jsp)
4.3. Wynik należy wyprowadzić korzystając z tabeli HTML (znaczniki <TABLE> <TR>
<TD>)
4.4. Dokonać rozmieszczenia (deployment) strony JSP na serwerze Oracle9iAS
Containers for J2EE i przetestować całość uzyskanego w ten sposób Systemu
Informatycznego. (p. ćw 1)
4.5. Odpowiedzieć na pytanie: czy w przypadku rozważanej usługi ma znaczenie jej
połączeniowość (stateless/stateful).
4.6. Z ilu warstw składa się zaimplementowany System (w wersji z JSP)? Jako warstwę
rozumiemy składową w obrębie, której nie występują połączenia prot. sieciowych.
4.7. (Dodatkowe) Cały wiersz wyniku jest przekazywany w jednej linii. Jak przekazywać
pojedyncze pola?
4.8. (Dodatkowe) Może okazać się, że odpowiedź na zap. SQL zawiera mniej wierszy niż
określa to parametr howMany. Jak rozsądnie obsłużyć taką sytuację?
Dodatek A
Orders
Shippers
ShipperID
int
<pk>
CompanyName nvarchar(40)
Phone
nvarchar(24)
OrderID
CustomerID
EmployeeID
OrderDate
RequiredDate
ShippedDate
ShipVia
Freight
ShipName
ShipAddress
ShipCity
ShipRegion
ShipPostalCode
ShipCountry
Customers
int
nchar(5)
int
datetime
datetime
datetime
int
money
nvarchar(40)
nvarchar(60)
nvarchar(15)
nvarchar(15)
nvarchar(10)
nvarchar(15)
<pk>
<fk1>
<fk2>
CustomerID
CompanyName
ContactName
ContactTitle
Address
City
Region
PostalCode
Country
Phone
Fax
<fk3>
nchar(5)
<pk>
nvarchar(40)
nvarchar(30)
nvarchar(30)
nvarchar(60)
nvarchar(15)
nvarchar(15)
nvarchar(10)
nvarchar(15)
nvarchar(24)
nvarchar(24)
Employees
Order Details
OrderID
ProductID
UnitPrice
Quantity
Discount
int
<pk,fk1>
int
<pk,fk2>
money
smallint
real
EmployeeID
LastName
FirstName
Title
TitleOfCourtesy
BirthDate
HireDate
Address
City
Region
PostalCode
Country
HomePhone
Extension
Photo
Notes
ReportsTo
PhotoPath
Products
ProductID
ProductName
SupplierID
CategoryID
QuantityPerUnit
UnitPrice
UnitsInStock
UnitsOnOrder
ReorderLevel
Discontinued
int
<pk>
nvarchar(40)
int
<fk2>
int
<fk1>
nvarchar(20)
money
smallint
smallint
smallint
bit
int
<pk>
nvarchar(20)
nvarchar(10)
nvarchar(30)
nvarchar(25)
datetime
datetime
nvarchar(60)
nvarchar(15)
nvarchar(15)
nvarchar(10)
nvarchar(15)
nvarchar(24)
nvarchar(4)
image
ntext
int
<fk>
nvarchar(255)
EmployeeTerritories
CustomerCustomerDemo
EmployeeID int
<pk,fk1>
TerritoryID
nvarchar(20) <pk,fk2>
CustomerID
nchar(5) <pk,fk2>
CustomerTypeID nchar(10) <pk,fk1>
Territories
TerritoryID
nvarchar(20) <pk>
TerritoryDescription nchar(50)
RegionID
int
<fk>
Suppliers
SupplierID
CompanyName
ContactName
ContactTitle
Address
City
Region
PostalCode
Country
Phone
Fax
HomePage
int
<pk>
nvarchar(40)
nvarchar(30)
nvarchar(30)
nvarchar(60)
nvarchar(15)
nvarchar(15)
nvarchar(10)
nvarchar(15)
nvarchar(24)
nvarchar(24)
ntext
Categories
CategoryID
CategoryName
Description
Picture
int
<pk>
nvarchar(15)
ntext
image
CustomerDemographics
CustomerTypeID nchar(10) <pk>
CustomerDesc
ntext
Region
RegionID
int
<pk>
RegionDescription nchar(50)

Podobne dokumenty