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

background image

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/

background image

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

background image

245

Architektura zorientowana na 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

dostawca

usługi

klient usługi

rejestr usług

opublikuj

znajdź

wywołaj

background image

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

background image

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

background image

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
• Łatwość 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)

background image

249

Ogólny model usług sieciowych

aplikacja klienta

rejestr usług

(UDDI)

usługa

sieciowa

inerfejs XML (WSDL)

interfejs XML (WSDL)

1

2

3

background image

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

background image

251

Architektura SOAP

• 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.

klient

SOAP

serwer

SOAP

usługa

SOAP

konwersja

odczytanie

konwersja

odczytanie

HTTP

XML

XML

XML

XML

wynik

wynik

metoda()

metoda()

background image

252

Koperta SOAP

• Koperta SOAP to poprawny dokument XML który zawiera

następujące elementy

– <Envelope></Envelope> wyznacza początek i koniec koperty
– <Header></Header> wyznacza początek i koniec nagłówka

koperty, w nagłówku umieszczane są informacje specyficzne dla
aplikacji, np. routing, cache, szyfrowanie, podpisy cyfrowe

– <Body></Body> 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

– <Fault></Fault> wyznacza początek i koniec bloku opisującego

błędy powstałe podczas przetwarzania

background image

253

Przykład koperty SOAP

POST /dodaj HTTP/1.1

Content-Type: text/xml; charset=utf-8

Content-Length: xxx

SOAPAction "http://miner.cs.put.poznan.pl/kalkulator"

<?xml version="1.0"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

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

<soap:Body>

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

<m:val1>10</m:val1>

<m:val2>20</m:val2>

</m:dodaj>

</soap:Body>

</soap:Envelope>

Wywołanie metody

float dodaj(float x, float y)

z wartościami 10 i 20

background image

254

Przykład koperty SOAP

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: xxx

<?xml version="1.0"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

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

<soap:Body>

<m:dodajResponse

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

<m:dodajResult>30</m:dodajResult>

</m:dodajResponse>

</soap:Body>

</soap:Envelope>

Wynik metody

float dodaj(float x, float y)

z wartościami 10 i 20

background image

255

Przykład koperty SOAP

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

<?xml version="1.0"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

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

<soap:Body>

<soap:Fault xmlns:m="http://miner.cs.put.poznan.pl/kalkulator">

<faultCode>soap:client</faultCode>

<faultString>Podano zbyt wiele parametrów</faultString>

</soap:Fault>

</soap:Body>

</soap:Envelope>

Wynik metody

float dodaj(float x, float y)

, pojawił się niespodziewany błąd

background image

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)

background image

257

Architektura Apache SOAP

klient

serwer

SOAP

klasa

Java

org.apache.soap

org.apache.soap.rpc

serwer WWW

HTTP

XML

XML

XML

XML

background image

258

Ręczna implementacja usługi

public class Kalkulator {

public float dodaj(float x, float y) { return x+y; }

}

Kod usługi

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"

id="urn:MojKalkulator">

<isd:provider type="java" scope="Application" methods="dodaj">

<isd:java class="Kalkulator" static="false"/>

</isd:provider>

</isd:service>

Deskryptor instalacji

java org.apache.server.ServiceManagerClient \

http://miner.cs.put.poznan.pl/apache-soap/servlet/rpcrouter \

deploy deployment_descriptor.xml

Instalacja usługi

background image

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();

...

background image

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.

background image

261

Przykład pliku WSDL

<?xml version = '1.0' encoding = 'UTF-8'?>

<definitions name="LookupEmp"

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">

<message name="dodaj0Request">

<part name="x" type="xsd:float"/><part name="y" type="xsd:float"/>

</message>

<message name="dodaj0Response">

<part name="return" type="xsd:float"/>

</message>

<portType name="WebservicePortType">

<operation name="dodaj">

<input name="dodaj0Request" message="tns:dodaj0Request"/>

<output name="dodaj0Response" message="tns:dodaj0Response"/>

</operation>

</portType>

<binding name="WebserviceBinding" type="tns:WebservicePortType">

<soap:binding style="rpc"/>

<operation name="dodaj">

<input name="dodaj0Request"><soap:body use="encoded" namespace="Kalkulator"/></input>

<output name="dodaj0Response"><soap:body use="encoded" namespace="Kalkulator"/></output>

</operation>

</binding>

<service name="Kalkulator">

<port name="WebservicePort" binding="tns:WebserviceBinding">

<soap:address location="http://miner.cs.put.poznan.pl/Kalkulator"/>

</port>

</service>

</definitions>

background image

262

Automatyczna translacja dokumentów

WSDL przez 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ą.

Dokument WSDL

Client Proxy

oracle.wsdl.toolkit.ProxyGenerator

background image

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

background image

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

background image

265

Podsumowanie

UDDI

XML

XML

Java

Client
Proxy

usługa

SOAP

usługa

SOAP

Java

wyszukanie usługi

WSDL

WSDL

aplikacja klienta

wywołanie usługi

wyniki

background image

266

Klasa 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; }

}

Kalkulator.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);

}

IKalkulator.java

background image

267

Utworzenie usługi sieciowej

background image

268

Wybór klasy źródłowej

background image

269

Wybór metod dostępnych w usłudze

background image

270

Wybór konfiguracji WSDL

background image

271

Wygenerowanie klasy klienta proxy

background image

272

Wybór parametrów klienta proxy

background image

273

Wybór metod dla których zostaną

wygenerowane wrappery

background image

274

Instalacja usługi sieciowej

background image

275

Fragment przykładowego klienta

....

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(); }

}

KalkulatorWebServiceStub.java


Wyszukiwarka

Podobne podstrony:
3 Parametry i usługi sieci dostępu do Internetu – teraz i w przyszłości
Zagrożenia dla?zpieczeństwa energetycznego przez ograniczaną dostępność do złóż węgla brunatnegox
Aero2 Regulamin Uslugi Bezplatnego Dostepu do Internetu 10 05 2011
IT Parametry i usługi sieci dostępu do internetu
3 Parametry i usługi sieci dostępu do Internetu – teraz i w przyszłości
Wgrywanie firmware do tel nokia przez Phoenix Service Software
dostep do informacji publicznej Nieznany (2)
07-02 PAM-Dostęp do Waszego Makro-Ducha i do Waszej Świadomości, ezoteryka
późniak koszałka,bazy?nych, Dostęp do?z?nych poprzez WWW
Zasady dostępu do informacji sektora publicznego i jej ponownego wykorzystania
Żeglugę kabotażową rozwinęły państwa mające szeroki dostęp do morza doc
Metody Dostępu Do Internetu
076 Ustawa o dostepie do informacji publicznej
dostep do informacji publicznej Nieznany
Domyślny dostęp do poczty w pracowni szkolnej
projekt sieci LAN z dostępem do Internetu
lista firm uzyskujacych dostep do tajemnicy bankowej
Definiowanie reguł postępowania dla serwera FireWall określających sposób dostępu do wybranych serwe

więcej podobnych podstron