dostęp do komponentów ejb przez usługi web services KDK342TYVWJFHS4WYW2AD3PRYEQV2AIB3XIXBCY


243
Dostęp do komponentów EJB przez
usługi Web Services
Mikołaj Morzy
Mikolaj.Morzy@cs.put.poznan.pl
http://www.cs.put.poznan.pl/mmorzy/
244
Plan rozdziału
" Wprowadzenie do usług sieciowych
" Architektura SOAP
" Web Services Definition Language
" Rejestr UDDI
" Zastosowanie Oracle JDeveloper do tworzenia usług
sieciowych
245
Architektura zorientowana na usługi
rejestr usług
znajdz
opublikuj
wywołaj
dostawca
klient usługi
usługi
" Usługa sieciowa (Web Service) to technologia budowania
rozproszonych, komunikujących się ze sobą aplikacji
" Usługi sieciowe
 samodzielnie się opisują
 są zorientowane na świadczenie usług
 są oparte o standardy (HTTP, SMTP, XML, SOAP, WSDL, UDDI)
 opisują komunikację między aplikacjami
 są niezależne od platformy i języka implementacji
246
Elementy usług sieciowych
" Komunikacja: podstawą funkcjonowania usług sieciowych
są tradycyjne protokoły internetowe (HTTP, FTP) za
pomocą których usługi sieciowe komunikują się ze sobą
" Uniwersalny format danych: usługi sieciowe korzystają
z XML w celu wymiany danych oraz w celu opisu
funkcjonalności poszczególnych usług
" Simple Object Access Protocol: usługi sieciowe
wykorzystują protokół SOAP do wymiany komunikatów
XML. Protokół SOAP funkcjonuje jako wrapper dla
komunikatów XML, zamykając je w tzw. kopertach
247
Elementy usług sieciowych
" Web Services Description Language: dokumenty WSDL
to samoopisujące się specyfikacje prezentujące
funkcjonalność danej usługi. Dokumenty WSDL są zgodne z
XML i zawierają informację w jaki sposób należy korzystać z
danej usługi sieciowej
" Universal Description, Discovery and Integration:
rejestry usług UDDI przechowują dokumenty WSDL
opisujące usługi. Rejestry te są przeszukiwane w celu
zlokalizowania odpowiedniej usługi. Rejestry UDDI są
wykorzystywane przez dostawców usług do publikowania
usług
248
Zalety korzystania z usług sieciowych
" Rozproszony model komponentów
" Wykorzystanie XML do reprezentacji i przesyłania danych
" Pełna niezależność od języka implementacji
" Aatwość dostępu przy pomocy standardowych protokołów,
takich jak HTTP, FTP, SMTP
" Oszczędność czasu, istniejące komponenty mogą być
bardzo łatwo udostępnione jako usługi sieciowe
" Różne sposoby wykorzystania
 komunikacja synchroniczna (RPC)
 komunikacja asynchroniczna (przesyłanie komunikatów)
249
Ogólny model usług sieciowych
aplikacja klienta
2
inerfejs XML (WSDL)
rejestr usług
3
(UDDI)
interfejs XML (WSDL)
1
usługa
sieciowa
250
Protokół SOAP
" SOAP to prosty protokół oparty na XML który pozwala na
wymianę danych z wykorzystaniem protokołu HTTP oraz na
implementowanie usług sieciowych
" SOAP jest przenośnym protokołem, aplikacje korzystające z
SOAP mogą być napisane w różnych językach i mogą być
wykonywane na różnych platformach
" Komunikacja między aplikacjami wykorzystującymi SOAP
odbywa się poprzez
 zdalne wołanie procedur (RPC  Remote Procedure Call)
 wymianę komunikatów
251
Architektura SOAP
klient serwer
usługa
SOAP
SOAP SOAP
metoda() wynik wynik metoda()
konwersja odczytanie konwersja odczytanie
XML XML
XML XML
HTTP
" Wywołanie metody przez klienta jest konwertowane do
dokumentu XML, parametry wywołania są konwertowane
do postaci binarnej i dokument XML jest wysyłany za
pomocą protokołu HTTP do usługi sieciowej. Metoda
sieciowa zwraca wynik działania w analogiczny sposób.
252
Koperta SOAP
" Koperta SOAP to poprawny dokument XML który zawiera
następujące elementy
 wyznacza początek i koniec koperty

wyznacza początek i koniec nagłówka
koperty, w nagłówku umieszczane są informacje specyficzne dla
aplikacji, np. routing, cache, szyfrowanie, podpisy cyfrowe
 wyznacza początek i koniec ciała koperty, w ciele
zawarte są dane wywołania usługi (np. nazwy i wartości
parametrów) jak i wyniki działania usługi
 wyznacza początek i koniec bloku opisującego
błędy powstałe podczas przetwarzania
253
Przykład koperty SOAP
Wywołanie metody float dodaj(float x, float y)z wartościami 10 i 20
POST /dodaj HTTP/1.1
Content-Type: text/xml; charset=utf-8
Content-Length: xxx
SOAPAction "http://miner.cs.put.poznan.pl/kalkulator"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">


10
20



254
Przykład koperty SOAP
Wynik metody float dodaj(float x, float y)z wartościami 10 i 20
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: xxx

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

xmlns:m="http://miner.cs.put.poznan.pl/kalkulator">
30



255
Przykład koperty SOAP
Wynik metody float dodaj(float x, float y), pojawił się niespodziewany błąd
HTTP/1.1 500 Server Error
Connection: close
Content-Type: text/xml; charset=utf-8
Content-Length: xxx
Date: 01 Feb 2004 04:02:23 GMT

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">


soap:client
Podano zbyt wiele parametrów



256
Implementacja
" Protokół SOAP jest niezależny od języka implementacji,
proces kodowania (serializacji) żądania i wyniku działania
usługi, jak i proces komunikacji przez protokół HTTP może
być przeprowadzony w dowolnym języku programowania.
" Wiele języków udostępnia wygodne biblioteki
 Java SOAP for Apache
 Java GLUE
 Perl SOAP::Lite
 C/C++ gSoap
 Microsoft SOAP (część platformy .NET)
257
Architektura Apache SOAP
serwer
klasa
klient
Java
SOAP
org.apache.soap
serwer WWW
org.apache.soap.rpc
XML XML
XML XML
HTTP
258
Ręczna implementacja usługi
Kod usługi
public class Kalkulator {
public float dodaj(float x, float y) { return x+y; }
}
Deskryptor instalacji
id="urn:MojKalkulator">




Instalacja usługi
java org.apache.server.ServiceManagerClient \
http://miner.cs.put.poznan.pl/apache-soap/servlet/rpcrouter \
deploy deployment_descriptor.xml
259
Ręczna implementacja usługi
import java.net.URL;
import java.util.Vector;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
...
Call call = new Call();
call.setTargetObjectURI("urn:MojKalkulator");
call.setMethodName("dodaj");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Vector parameters = new Vector();
parameters.addElement(new Parameter("val1", Float.class, 10, null));
parameters.addElement(new Parameter("val2", Float.class, 20, null));
call.setParams(parameters);
Response response = call.invoke(new
URL("http://miner/apache-soap/servlet/rpcrouter"), "");
Parameter returnValue = response.getReturnValue();
Object value = returnValue.getValue();
...
260
Web Services Description Language
" Wołając daną usługę programista musi zaszyć w kodzie
lokalizację usługi, nazwę metody, liczbę i typy parametrów.
" WSDL to oparty o XML język opisu usługi, dokument WSDL
zawiera wszystkie informacje potrzebne do wywołania
usługi (lokalizacja, nazwa, parametry).
" WSDL jest tworzony przez dostawcę usługi i publikowany,
programiści mogą ściągnąć opis usługi i wykorzystać go do
wywołania danej usługi.
" Dokumenty WSDL mogą być automatycznie przetłumaczone
na język programowania wykorzystywany przez
programistę (za pomocą Client Proxy), tłumaczenie może
też odbywać się w momencie wywoływania usługi.
261
Przykład pliku WSDL

targetNamespace="http://webservice/LookupEmp.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://webservice/LookupEmp.wsdl"
xmlns:ns1="http://webservice/Webservice.xsd">

























262
Automatyczna translacja dokumentów
WSDL przez Client Proxy
oracle.wsdl.toolkit.ProxyGenerator
Dokument WSDL Client Proxy
" Utworzony przez dostawcę usługi dokument WSDL jest
pobierany przez programistę/klienta. Klient tłumaczy
dokument WSDL na język, w którym tworzona jest aplikacja
łącząca się z usługą sieciową.
263
Rejestr UDDI
" UDDI to specyfikacja bazy danych, w których dostawcy
usług rejestrują swoje usługi przy pomocy dokumentów
WSDL
 white pages: adres, dostawca, informacja kontaktowa
 yellow pages: wyszukiwanie wg typu, lokalizacji, kategorii i innych
 green pages: informacje techniczne, interfejs, URL, itp.
" Rejestr UDDI jest wykorzystywany do odczytania
dokumentu WSDL i przesłania go do klienta w celu
wygenerowania kodu łączącego się z usługą
" Dostępne obecnie usługi sieciowe oferują bardzo szeroki
zakres świadczeń, m.in. prognozy pogody, wymiana walut,
wyszukiwarki, sklepy internetowe, i wiele innych
264
REST
" Podejście REST (Representational State Transfer): krytyka
technologii usług sieciowych
 tradycyjne techniki i metody HTTP (POST,GET,PUT,DELETE) w
zupełności wystarczające
 unikalny URL reprezentuje komponent usług sieciowych a nie
konkretną usługę, przez co trudniej buforować wyniki
 bezpośrednia dostępność usług ułatwia ich integrację
 konieczność uczenia się nowych narzędzi i technik
265
Podsumowanie
wyszukanie usługi
UDDI
WSDL
XML
WSDL
XML
Client
Proxy
Java
aplikacja klienta
wywołanie usługi
usługa
usługa
Java
SOAP
SOAP
wyniki
266
Klasa Java
Kalkulator.java
public class Kalkulator {
public Kalkulator() {}
public float dodaj(float x, float y) { return x+y; }
public double odejmij(double x, double y) { return x - y; }
public double pomnoz(double x, double y) { return x * y; }
public double podziel(double x, double y) { return x / y; }
}
IKalkulator.java
public interface IKalkulator
{
public double dodaj(double x, double y);
public double odejmij(double x, double y);
public double pomnoz(double x, double y);
public double podziel(double x, double y);
}
267
Utworzenie usługi sieciowej
268
Wybór klasy zródłowej
269
Wybór metod dostępnych w usłudze
270
Wybór konfiguracji WSDL
271
Wygenerowanie klasy klienta proxy
272
Wybór parametrów klienta proxy
273
Wybór metod dla których zostaną
wygenerowane wrappery
274
Instalacja usługi sieciowej
275
Fragment przykładowego klienta
KalkulatorWebServiceStub.java
....
public class KalkulatorWebServiceStub
{
public KalkulatorWebServiceStub() {
m_httpConnection = new OracleSOAPHTTPConnection();
m_smr = new SOAPMappingRegistry(); }
public static void main(String[] args) {
try
{
KalkulatorWebServiceStub stub = new KalkulatorWebServiceStub();
Double x = new Double(10);
Double y = new Double(20);
Double result = stub.podziel(x,y);
System.out.println(result);
}
catch(Exception ex) { ex.printStackTrace(); }
}


Wyszukiwarka

Podobne podstrony:
Aero2 Regulamin Uslugi?zplatnego Dostepu do Internetu 11
Opinie uczniów gimnazjów na temat dostępności do nielegalnych substancji psychoaktywnych i przyczyn
Prezentacja na zajęcia dostęp do informacji publicznej 9 10 2015 (1)
Dostęp do informacji publiczej zawartej w dokumentach osób ubiegających się o pracę
02 Linux Prawa dostępu do plików i katalogów
Rodzaje dostepu do internetu
Definiowanie reguł postępowania dla serwera FireWall określających sposób dostępu do wybranych serwe
Dostęp do poczty z sieci Internet poprzez program Outlook Express i protokół POP3
Metody dostępu do nośnika
FOR Ostrzega GUS ogranicza dostep do statystyki pub
@PSI W14a Platforma NET Kolekcje dostęp do danych
Szerokopasmowy dostęp do internetu
Hurtownie danych czyli jak zapewnic dostep do wiedzy tkwiacej w danych

więcej podobnych podstron