portal Michała Hanćkowiaka
Begin main content
Search · Index
No registered users in community Materiały
in last 10 minutes

TAS - Technologie Aplikacji Serwerowych

UWAGA: główny materiał do "tematów" pochodzi z zajęć PZR 420 co nie zostało jeszcze zmodyfikowane ...

Temat A - Sun RPC

główny materiał do tematu A (PZR)

opis języka RPC (tego używanego w plikach .x)
opis formatu XDR rfc1014 (rozdz. 5.3 zawiera gramatykę j. RPC)
spec prot RPC rfc1831 (rozdz. 8. zawiera opis komunikatów)

Zadanie A.1 "wsk. w RPC"
Sprawdź w jaki sposób można używać wskaźników w RPC...
Czy są jakieś ograniczenia?
Jakie struktury danych (listy? drzewa? cykle??) można przekazywać do zdalnej proc.?

Temat B - RMI/Java

główny materiał do tematu B (PZR)

Nowa dokumentacja do Javy: Java SE 6.
Współbieżność w j. Java - sop322/F (na użytek zadań 11, 12, 14).
Opisy klas javowych Object (metody wait i notifyAll) i Thread (jak używać wątków).
Uwaga: id bieżącego wątku można wypisać przez "System.out.println(Thread.currentThread().getId());".
dokumentacja RMI (pakiety java.rmi itp; klasy UnicastRemoteObject, Naming)
+ 28.10.2015, dlaczego codebase nie działa pod JDK1.7 ???
hipoteza1: trzeba dodać url dostawcy klas do "jcontrol" (podobnie jak z appletami!!) ???

Temat C - Corba

główny materiał do tematu C (PZR), zadania dodatkowe (też je należy robić!)

spis brokerów Corby oraz różne docs, narzędzia, uwagi...

Zadania (*), oprócz oznaczonych także:
- zaprezentowanie brokera (z tych nieomówionych, np omniORB)
- zademonstrowanie serwisu Corbowego (z tych nieomówionych, np TradingService)

Uwagi ogólne na temat Corby:
+ najnowsza specyfikacja Corba 3.3
+ kto obecnie używa Corby???
patrz: ois, ...
+ rozszerzenia Corby:
CCM = Corba Component Model, podobne do EJB, jest w spec 3.3
RT Corba (Real Time) , Corba/e (embedded), ...
+ nowe techn. podobne do Corby:
ZeroC ICE, ob. UNO z openoffice, Apache Avro, Apache Thrift, ProtoBuf, gRPC, ...
+ inne techn. obiektów rozproszonych:
RMI, .NET Remoting, EJB/J2EE, ...
+ DOA (Dist. Obj. Arch.) vs SOA (Service Oriented Arch.):
???
+ EJB = Corba "w innym kapeluszu" ?
kontener EJB jest główną częścia serwera aplikacji JavaEE, np. GlassFish
w kliencie GlassFish-a ref. do beanów są ref. corbowymi (rmi-over-iiop)
można pisać klienty EJB w dowolnym języku z brokerem corby!!!
???

Uwagi szczegółowe na temat Corby:
+ pliki IDL dla kilku serwisów Corby (COS) COSidl.idl
+ pojęcie "sesji" w corbie???
fabryka obiektów corbowych; dla każdego klienta tworzy inny "sesyjny" obiekt ...
+ czym są COS (serwisy corbowe)???
klocki, które można łączyć i z których można zbudować coś większego ...
+ numery portów serwera Corby???
serwer corbowy używa JEDNEGO nr portu dla wszytkich swoich ob.
+ co zrobić przy błędach komunikacyjnych???
zajrzeć do plików .IOR przy pomocy skryptu iordump.tcl (tclkit iordump.tcl plik.ior)
czy nr. portu i adres serwera są ok??
+ problemy z kompilacją plików .IDL dla serwisów corbowych (np. PropertyService)???
repoid w .IOR (np. IDL:HelloApp/Hello:1.0) musi sie zgadzać z nazwą modułu/interfejsu w .IDL
ew. można użyc #pragma ID "IDL:...:1.0"
+ EventService, problemy, zadanie 36 (PZR) i C.5
KONIECZNIE trzeba wykonywać "$ch1 destroy" przed wyłączeniem klienta EventService!!!
jeśli tego nie zrobimy to demon eventd prawd. będzie miał ref. do ob. klienckich ktore nie istnieją,
co spowoduje jego zawieszenie... tzn że met. "destroy" nie niszczy kanału tylko usuwa powiązania klienta z kanałem!!
okazuje się że "destroy" niszczy powiązania WSZYSTKICH klientow, ale mają oni szansę
ponownie się podłączyć w metodzie "disconnect_*" ...

Temat D - WebService (SOAP+WSDL)

główny materiał do tematu D (PZR), zadania dodatkowe (też je należy robić!)

Tcl/ pakiet tclws, nowoczesny toolkit WS, obsługuje WSDL, działa jako kli. i ser., współpracuje z axis 1 i gSOAP, ...
tclws docs, przykłady (pliki tclws_test*.tcl)
instalacja: tclws.zip, wymaga pakietow: tdom, dict, tls (?), tcllib (tcllib.tar.gz), materiały o j. Tcl
pakiety tdom (obsługa XML) i dict są obecnie w 32-bitowym tclkit pod lin i win!
W zadaniach tematu D należy toolkit "tclws" traktować jako alternatywę dla toolkit-u "tclSOAP" (starego typu).
Różnica tclws vs tclSOAP???
tclws używa WYŁĄCZNIE stylu dokumentowego (i generuje plik .wsdl),
a tclSOAP WYŁĄCZNIE stylu rpc (i NIE generuje pliku .wsdl).

13.01.2015, Uwaga: w katalogu tclkits znajduje się interpreter j.Tcl "tclkit_2" (linux, 32bit, 5.5MB),
zawierający wielką liczbę pakietów (wszystkie potrzebne w temacie C i D !!),
za wyjątkiem "java" (tclBlend) i "tls", które niestety wymagają ustawiania zm. środowiska...

Pakiet j.Tcl "tdom" - najprostszy sposób na przetwarzanie XML ???
inna dokumentacja, a tutaj są ciekawe artykuły na temat tego pakietu, szczególnie tDOM3.pdf ...
patrz też rozdział "Narzędzia XML" na stronie PZR !

Wskazówki do zadań 40, 41, ... (PZR);
jako serwera/WS można użyc tclws, patrz tclws_ser*.tcl w kat przykłady (zamiast gSOAP !!)
tclws_ser2.tcl pokazuje jak definiować własne typy (struktura "mojTyp")
przypominam, ze zawsze można utworzyć typ sekwencyjny przy pomocy "()", np. "int()", "mojTyp()"
jeśli uruchomiliśmy serwer tclws_ser1.tcl, to url "http://localhost:30000/service/qqq/wsdl" zwraca WSDL
natomiast url "http://localhost:30000/service/qqq/" zwraca opis "dla człowieka" tego serwisu...
Jak tworzyć klienta gSOAP???
wygenerować plik q.h przy pomocy wsdl2h, poszukać w nim funkcji soap_call_*
zobaczyć jakie ta fun. ma parametry, poszukac ich definicji w q.h itd
wzorować się na przykładzie klienta (q.c) ze strony PZR...

Toolkit gSOAP - dalsze uwagi...
26.01.2015 UWAGA: operacje w pliku "q.h" MUSZĄ mieć prefix "ns__" (DWA znaki "_" !!!)
np.: int ns__pomnozRazy2(struct t_tab par, struct t_tab *return_);
w przeciwnym razie w namespace webserwisu NIE bedzie tej operacji,
i plik .wsdl NIE zostanie wygenerowany przez program soapcpp2.

Jeśli chcemy zbudować "klienta tclws" do "serwera gSOAP" to MUSIMY
przestawić serwer na styl documentowy!!
28.01.2015 UWAGA: Jeśli budujemy "klienta axis (z WSDL)" dla "serwera gSOAP" to wyniki operacji MUSZĄ być
zwracane przez (pośrednią) strukturę [nazwa_metody]Response !!! (patrz też uwaga 2 w opisie gSOAP (PZR))
11.01.2016 UWAGA do zadania 40; jeśli serwer jest gSOAP-powy, a klient pod tclws, to musimy:
na serwerze, w pliku qqq.wsdl, zmienić nr portu (location) z 80 na 10000,
na kliencie wywolywac pomnozRazy2 tak: qqq::pomnozRazy2 {item {1 2 3}}

Wskazówka do zadania 45 (PZR) "mapa temperaturowa", które nadaje się na projekt ...
w zadaniu tym potrzebne są narzędzia do pokazywania mapy, którą można przesuwać myszką/palcem,
na mapie tej umieszcza się temperatury wyciągnięte z odp. WS;
przykład programu w j. Tcl, który się nadaje jako podstawa tego zadania znajdziesz w kat. zadanie 45
uruchamiać tak: ./tclkit_2 gis10_.tcl
dokumentacja pakietów: map::slippy, map::slippy::fetcher
map::slippy pozwala na zamianę współrzędnych: lat/lon (geo) <-> points <-> tiles
oczywiście jest też możliwe użycie innego j. programowania i innych bibliotek...
Pakiety map::slippy używają serwisu/projektu OpenStreetMap, patrz też Mapnik, Tiles, ...
Można dodać znajdowanie miejsca na mapie na podstawie adresu, patrz "gis11a.tcl".
W gis10_.tcl zamiast widgetu canvas używa się jego rozszerzenia canvas::sqmap, który
potrafi rysować mapy kafelkowe (gdzie kafelki pochodzą np. z OpenStreetMap).

Temat E - ciekawe serwery http...

!!! NIEDOKOŃCZONE !!!

główny materiał do tematu E (PZR)

Temat F - EJB = Enterprise Java Beans

!!! NIEDOKOŃCZONE !!!

główny materiał do tematu F (PZR)

Temat G - MOM, Message Oriented Middleware

!!! NIEDOKOŃCZONE !!!

rabbitmq, zeromq, qpid, prot amqp, Java JMS, ...

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...