Java 1 - Kolos

Transkrypt

Java 1 - Kolos
Uniwersytet Łódzki
Wydział Matematyki i Informatyki,
Katedra Analizy Nieliniowej
UDDI & WSDL
wykład 10
Programowanie w Javie 2
mgr inż. Michał Misiak
WSDL (1)





Web Services Description Language
Bazuje na XML
Służy do definiowania i opisu usług sieciowych
Opisuje serwis jako kolekcja punktów końcowych (URI,
na które wysyłane są żądania)
WSDL:



Opisuje jakie usługi są udostępniane przez WS
W jaki sposób wywoływać jego operacje
Gdzie można znaleźć WS
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
WSDL (2)

Zawiera definicje i terminologie pozwalające na:
 Definiowanie
WS
 Definiowanie punktu końcowego
 Informacji o wyjściowych i wejściowych komunikatach
 Abstrakcyjny sposób deklarowania wiązań z
protokołami i formatami danych

WSDL umożliwia częściowe wygenerowanie
kodu usługi sieciowej
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Elementy WSDL













<definitions>
<import>*
<types>
<schema></schema>*
</types>
<message>*
<part></part>*
</message>
<PortType>*
<operation>*
<input></input>
</service>
</definitions>












<output></output>
<fault></fault>*
</operation>
</PortType>
<binding>*
<operation>*
<input></input>
<output></output>
</operation>
</binding>
<service>*
<port></port>*
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady elementów



<definitions> - kontener na opis serwisu.
<import> - zachowuje się podobnie do #include w C.
Umożliwia podział elementów serwisu do niezależnych
dokumentów. Zwiększa to modularność oraz czytelność
definicji serwisu.
<types> - kontener do definiowania typów danych, które
są używane w elemencie <message>. <message>
określa format komunikatów wymienianych miedzy
klientem i WS.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady elementów



<message> - element, który wykorzystywany jest do przesyłania danych
pomiędzy klientem, a WS. Element wykorzystuje typy zdefiniowane w sekcji
<types>. Komunikat zbudowany z jednego lub wielu pod elementów <part>.
Pojedyncze elementy <part> identyfikują poszczególne partie danych
<portType> - wyszczególnia zbiór operacji udostępnianych przez punkt
końcowy WS.
<operation> - abstrakcyjna definicja akcji wspieranej przez WS. Analogia
do definicji metody w Javie. Dana Operacja WSDL może używać
komunikatów wejściowych i wyjściowych jako części wykowywanej akcji.


<operation> definiuje nazwe operacji przy uzyciu atrybutu name,
komunikaty wejsciowe i wyjsciowe sa definiowane przez podelementy <input>
oraz <output>.
 Elementy <input> <output> odnoszą się do elementów <message>.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykład elementów (3)



<binding> - element określa konkretny protokół oraz
specyfikacje formatu danych dla danego elementu
<portType>. Wiązanie z HTTP, SOAP lub MIME
<service> - element znajdujący się na końcu dokumentu
WSDL, identyfikujący dany WS. Element <service>
może grupować jeden lub więcej elementów <port>.
Element <port> określa punkt końcowy (punkt dostępu)
do WS.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
UDDI




Universal Description, Discovery and Integration
Projekt UDDI specyfikuje standardowy sposób publikowania i
odkrywania informacji na temat usług sieciowych
Projekt jest dostępny na stronie www.uddi.org
Projekt jest prowadzony przez UDDI Community składające się z:
Working Group (rozwój specyfikacji)
 Advisory Group (określanie wymagań oraz akceptacja specyfikacji


Sposoby odkrywania usług oferowanych przez partnerów
biznesowych:
Ręczne – dobre w prostych sytuacjach, komplikuje się przy wielu
usługach i partnerach biznesowych
 Automatyczne -> UDDI

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Rejestr UDDI


Rejestr UDDI jako uniwersalne miejsce do wymiany informacji o
usługach pomiędzy partnerami biznesowymi
Rejestr UDDI przechowuje 3 typy informacji:
White pages – podstawowa informacja kontaktowa oraz identyfikator
firmy zawierający nazwę, adres, dane kontaktowe oraz unikalny
identyfikator (np. NIP). Informacja ta pozwala innym na odkrycie usług
po przez rodzaj i nazwę firmy.
 Yellow pages – informacja, która opisuje usługi z wykorzystaniem
różnej kategoryzacji – taksonomia. Odkrywanie usługi odbywa się na
bazie podziału taksonomicznego np. fabryka, czy wypożyczalnia
samochodów
 Green pages – informacja techniczna, która opisuje zachowanie oraz
wspierane funkcje usług sieciowych dostarczanych przez firmę. Dane te
zawierają wskaźnik na WS oraz gdzie są zlokalizowane.

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Używanie UDDI

Sposób wykorzystania w zależności od perspektywy, kto
je wykorzystuje:


Analityk biznesowy – przeglądarka pozwalająca wyszukać
odpowiadający proces biznesowy. Analityk może chcieć
przeglądać różne UDDI oraz specyfikacje różnych WS
Programiści – wykorzystują API UDDI do publikacji WS oraz
odkrywania WS na bazie określonych kryteriów. Możliwe do
wyobrażenia, że aplikacja sama odkryje usługę i użyje jej bez
interakcji człowieka
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Architektura UDDI
Specyfikacja
UDDI
UDDI
Schema
REPLIKACJA
Rejestr
operatorów
Rejestr
operatorów
Ogólny
Rejestr UDDI
(UDDI Business Registry)
Rejestr
operatorów
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Rejestry UDDI




UBR – UDDI Business Registry – „chmura rejestrów”
Możliwość tworzenia prywatnych rejestrów operatorów
nie wchodzących w skład UBR
Prywatne rejestry UDDI wykorzystywane przy obsłudze
procesów biznesowych wewnętrznych bądź B2B
Aktualnie wiele produktów pozwala na kreację
prywatnych jak i również publicznych rejestrów UDDI:


BEA WebLogic Server, IBM WebSphere – serwer UDDI jako
część platformy J2EE
Systinet, HP, Oracle, SAP, Cape Clear – serwer UDDI
współpracujący z serwerem aplikacyjnym
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Specyfikacja UDDI


UDDI definiuje szereg standardowych XML
Schema, które zawierają formaty danych
wykorzystywane przez różne API
XML Schema dla UDDI dostępne pod adresem:
http://www.uddi.org w wersji 2.0
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Zawartość specyfikacji UDDI


Replikacja UDDI – dokument opisuje proces replikacji danych oraz
interfejsy, do których musi się dostosować operator w celu, aby móc
replikować dane w UDDI. Specyfikacja określa jedynie używany do
replikacji w węzłach
Operator UDDI – dokument opisuje zachowanie oraz parametry
operacyjne wymagane przez operatora węzła UDDI. Określa
wymagania związane z zarządzaniem danymi, do których operator
musi się dostosować
Odpowiedzialność operatora: zachowanie i bezpieczeństwo danych,
każda rejestracja posiada poprawny e-mail, zapewnienie spójności
danych przy kasowaniu
 Dokument ten nie posiada API oraz nie musi być implementowany
przez węzły prywatne

Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Zawartość specyfikacji UDDI (1)

Programistyczne API UDDI




określa zbiór funkcji, które rejestr UDDI dostarcza przy
odpytywaniu usług przechowanych w rejestrze oraz publikacji
danych biznesowych lub usług w UDDI.
Definiuje zbiór wiadomości SOAP, które serwer UDDI akceptuje,
przetwarza i odsyła
Schema z UDDI XML API oraz struktury danych UDDI stanowią
pełen interfejs dla rejestru UDDI
Struktura danych UDDI


Specyfikuje struktury danych używane w wiadomościach SOAP
Specyfikacja zawiera 5 podstawowych struktur oraz relacje
pomiędzy nimi
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Java API dla UDDI


Specyfikacja UDDI nie definiuje bezpośrednio API Javy,
jedynie wiadomości, które UDDI może akceptować
Kilka podejść do realizacji API Javy dla UDDI





Wykorzystać API Javy dla SOAP
Wykorzystać API Klienta dla UDDI dostarczone przez niezależne
firmy
Użyć JAXR
API UDDI zostały zaprojektowane w celu zapewnienia
prostoty
Każde żądanie do UDDI jest synchroniczne oraz ma
postać żądanie-odpowiedź, jest bezstanowe
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Wykorzystanie API Javy dla SOAP



Wykorzystanie API do tworzenia wiadomości
SOAP zawierających dokument XML dla UDDI
Programista może tworzyć ręcznie dokumenty,
które będą umieszczane w ciele wiadomości
SOAP
Wymagana jest znajomość struktury wiadomości
SOAP akceptowanych przez UDDI oraz
poprawne jej formatowanie
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Wykorzystanie API klienta UDDI




API dostarczane przez niezależnych producentów
wykorzystywane do dostępu do rejestru UDDI
API posiada klasy, które reprezentują struktury danych
oraz wspierają tworzenie wiadomości obsługiwanych
przez UDDI
API pozwala na interakcje z UDDI bez konieczności
znajomości specyfikacji SOAP lub wiadomości XML oraz
struktur danych
Dostarczone API jest zgodne ze specyfikacją UDDI co
pozwala na współpracę z różnymi rejestrami UDDI
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Wykorzystanie JAXR




Specyfikacja JAXR definiuje standardowy
sposób dostępu z Javy do rejestru
JAXR pozwala na pisanie programów
posiadających dostęp do kilku różnych rejestrów
włączenie z UDDI i ebXML
Minusem możliwości wykorzystania do różnych
rejestrów jest konieczność wprowadzenia przez
JAXR warstwy abstrakcji.
JAXR jest w fazie wczesnego rozwoju
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Programowanie UDDI







Specyfikacja opisuje dwa rodzaje API (publikacji i zapytania), które
wykorzystują różne dokumenty XML, struktury danych oraz punkty dostępu.
API Zapytanie (inquiry API) lokalizuje informacje na temat biznesu, usługi,
którą oferuje, jej specyfikacji tej usługi oraz postępowania w sytuacji
wystąpienia błędów
API zapytania nie wymaga autentykacji i jest przenoszone w ramach HTTP
API Publikacji (publishing API) – wykorzystywane do tworzenia,
przechowywania oraz aktualizacji informacji zlokalizowanej w UDDI
Wszystkie funkcje w API Publikacji wymagają autoryzacji w rejestrze UDDI
Rejestr UDDI przechowuje informacje na temat uprawnień. Dane potrzebne
do autoryzacji muszą być umieszczane jako parametr w XML, dla każdego
wołania
Zachowanie bezpieczeństwa wymaga zastosowania protokołu HTTPS
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady zapytań
Operator
node
Inquiry URL
Publishing URL
HP
http://uddi.hp.com/inquire
https://uddi.hp.com/publish
IBM Test
http://www3.ibm.com/services/uddi/inquirya
pi
https://www3.ibm.com/services/uddi/protect/publish
api
Microsoft
Production
http://uddi.microsoft.com/inquire
https://uddi.microsoft.com/publish
Microsoft
Test
http://test.uddi.microsoft.com/inqu
ire
https://test.uddi.microsoft.com/publish
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Struktury danych UDDI
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
<businessEntity>

Element reprezentuje podstawową informacje biznesową, która
zawiera:



Informacje kontaktowe
Wybraną kategorię
Identyfikatory
 Opis
 Relacje do innych elementów


Element ten pozwala firmom ustanowić relacje z innym na różne
sposoby.
Spółka matka może odwoływać się do spółek córek, deklarując
partnerstwo. Dana firma musi ustanowić unikalne <businessEntity> i
osobno zapisać relacje do innej firmy posiadającej własną strukturę
<businessEntity>.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
<publisherAssertion>


Struktura <publisherAssertion> używana jest do
ustanowienia relacji pomiędzy dwoma
strukturami <businessEntity>.
Relacja widziana jest jedynie w sytuacji, gdy
obie firmy utworzą te samo skojarzenie w
oddzielnych dokumentach niezaleznie.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
<businessService>


<businessEntity> zawiera jedną lub więcej struktur
<businessService>. <businessService> reprezentuje pojedynczy
logiczną usługę. Element <businessService> jest używany do opisu
zbioru usług udostępnianych biznesowi. Usługa ta może być WS lub
normalną usługą nie elektroniczną. Dokument <businessService>
jest ponownie wykorzystywany przez klika <businessEntity>.
UŁ może utworzyć usługę sieciową rejestracji i opublikować tą
usługę jako część „WS rejestracja studentów UŁ” struktury
<businessService>. Dodatkowo UŁ może wybrać każdą z jednostek
podległych jako osobny <businessEntity> od momentu, gdy każdy
wydział będzie miał własną infrastrukturę IT.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
<bindingTemplate>







<businessService> zawiera jedno lub więcej struktur <bindingTemplate>.
<bindingTemplate> zawiera wskaźnik do nietechnicznych opisów i wskaźnik
do punktu dostępu URL, jednak nie zawiera szczegółów specyfikacji usługi.
<bindingTemplate> zawiera opcjonalnie opis w postaci tekstu, adres URL
punktu dostępu i referencje do <tModel>.
<tModel> jest abstrakcyjną opisem danej specyfikacji lub zachowania usługi
sieciowej.
<tModel> jest cyfrowym odciskiem określającym specyfikę jak korzystać z
WS.
<tModel> nie udostępnia w sposób bezpośredni specyfikacji usługi, ale
zawiera wskaźnik do lokalizacji aktualnych specyfikacji.
Firmy mogą wykorzystywać informacje wskazywaną przez <tModel> w celu
określenia, czy usługa jest kompatybilna z wymaganiami biznesowymi.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
UUID




Instancje struktur danych UDDI identyfikowane są i
wskazywane przez uniwersalny identyfikator UUID
UUIDs są przypisywane, w momencie, gdy struktura
danych wstawiana jest do rejestru UUID.
UUID jest szesnastkowym ciągiem znaków, którego
struktura oraz algorytm generacji został zdefiniowany w
ISO/IEC 11578:1996. Standard gwarantuje unikalność
identyfikatora
Element <publisherAssertion> nie posiada UUID
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przeglądanie podstawowych
informacji


Zbiór wiadomości pozwala odpytywać UDDI w
zakresie informacji biznesowych, usługi
sieciowej lub meta danych
Elementy wykorzystywane w wiadomościach
przesyłanych do UDDI posiadają w swojej
nazwie find. Elementy te wykorzystywane są
jako element korzeń w żądaniu SOAP.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady żądań (1)

Żądanie: <find_binding>



<bindingDetail>
Zwraca UUID dla elementu <businessService>. Wiadomość ta
może odebrać zero lub więcej <bindingTemplate> z
pojedyńczym wpisem <bindingDetail> w zależności od kryteriów
podanych w argumentach wejściowych.
Żądanie: <find_business>


<businessList>
Zwraca wyrażenie regularne, dla kategorii usług, identyfikator
dostawcy usług lub <tModel>. Wiadomość ta odbiera zero lub
więcej elementów <businessInfo> zawartych w pojedynczym
elemencie <businessList>.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady żądań (2)

Żądanie <find_relatedBusinesses>



<relatedBusinessesList>
Zwraca UUID <businessEntity>. Wiadomość ta zwraca dla listę
UUID, które zawarte są w elemencie <relatedBusinessList> dla
dostawcy usług, który był powiązany z danym dostawcą usług.
Żądanie <find_service>


<serviceList>
Zwraca UUID <businessEntity> i nazwę usługi <tModel>
zaimplementowanej specyfikacji lub kategorię usługi.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Struktura odpowiedzi UDDI



UDDI zwraca dokument XML, który zawiera
podstawowe struktury UDDI, rzadziej jako same
struktury
Np. <find_business> zwraca 0 lub więcej
struktur <businessInfo> jednakże w strukturze
<businessList>
Struktury takie jak <businessList> istnieją
jedynie w celu grupowania elementów, podobnie
jak w kolekcjach Javy.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykład <find_business>



Zapytanie <find_business> zwraca <businessList>
Jako serwer UDDI można wykorzystać Systinet WASP UDDI
Systinet WASP UDDI zawiera:
Lokalny rejestr UDDI, który uruchmiany jest jako serwlet pod Apache
Tomcat 3.2.3
 Skrypty bazodanowe do Oracle, PostgreSQL, Cloudscape, Microsoft
SQL Server, IBM DB2. Bazy te przechują dane rejestrowe.
 API w Javie dla klienta UDDI
 Prosty kod ilustrujący jak użyć API klienta w Javie


Do tworzenia wiadomości wykorzystywany jest biblioteka Apache’a
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykład <find_business>
<uddi:find_business generic="2.0" maxRows="10">
<uddi:name> UŁ </uddi:name>
</uddi:find_business>
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Definicja <businessList>, <businessInfos>,
<businessInfo> w UDDI Schema
<element name="businessList" type="uddi:businessList" />
<complexType name="businessList">
<sequence>
<element ref="uddi:businessInfos" />
</sequence>
<attribute name="generic" use="required" type="string" />
<attribute name="operator" use="required" type="string" />
<attribute name="truncated" use="optional" type="uddi:truncated" />
</complexType>
<element name="businessInfos" type="uddi:businessInfos" />
<complexType name="businessInfos">
<sequence>
<element ref="uddi:businessInfo" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<element name="businessInfo" type="uddi:businessInfo" />
<complexType name="businessInfo">
<sequence>
<element ref="uddi:name" maxOccurs="unbounded" />
<element ref="uddi:description" minOccurs="0" maxOccurs="unbounded" />
<element ref="uddi:serviceInfos" />
</sequence>
<attribute name="businessKey" use="required" type="uddi:businessKey" />
</complexType>
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Publikowanie do rejestru UDDI

Różnice w przypadku zapytania i publikowania:
– wszystkie żądania publikacji wymagają
autoryzacji. Proces autoryzacji nie jest
wyspecyfikowany w UDDI i jest charakterystyczny dla
operatora węzła.
 Punkty dostępu – żądania publikacji i autoryzacji
wymagają różnych punktów dostępu. HTTP dla
zapytania HTTPS dla publikowania
 Ograniczenie miejsca – operator może zastrzec
 Przywiązanie do węzła operatora
 Autoryzacja
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady żądań przy publikowaniu (1)



Żądanie <add_publisherAssertions>
<dispositionReport>
Zwraca ważny token autentykacyjny oraz dokument
<publisherAssertion>. Wiadomość ta dodaje
<publisherAssertion> do indywidualnego zbioru
bezpieczeństwa. Autoryzacja publikującego tworzy
asocjacje pomiędzy dwoma biznesami. Jeśli obydwoje
publikujący dodają dokument <publisherAssertion> do
ich kolekcji relacja staje się widoczna publicznie.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008
Przykłady żądań przy publikowaniu (2)

Żądanie <delete_business>
 <dispositionReport>
 Zwraca
ważny token autentykacyjny i UUID jednego
lub więcej dokumentów <businessEntity>.
Wiadomość ta kasuje dokumenty <binding-Template>
z rejestru UDDI. Kasowanie dokumentu wywołuje
kasowanie zawartych danych dla <businessService>
lub <bindingTemplate>. Dodatkowo każdy
<publisherAssertions> utworzony z UUID dla
<businessEntity> zostanie usunięty.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej, M.Misiak © 2008