Dostęp do komponentów EJB przez usługi Web Services



Podobne dokumenty
Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Programowanie komponentowe

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

SOAP. Autor: Piotr Sobczak

Simple Object Access Protocol

Wielowarstwowe aplikacje internetowe. Web Services. Autorzy wykładu: Maciej Zakrzewicz Marek Wojciechowski. Web Services

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

Komunikacja i wymiana danych

Plan wykładu. Technologia Web Services. Web Services a WWW

Usługi sieciowe (Web Services)

Programowanie Komponentowe WebAPI

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

1 Wprowadzenie do J2EE

Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

Wybrane problemy modelu usługowego

Wybrane działy Informatyki Stosowanej

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Wywoływanie metod zdalnych

Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services

Web Services / Gridy

Sieciowe programowanie rozproszone SOA, WebServices i systemy gridowe. Krzysztof Banaś Systemy rozproszone 1

Rozproszone systemy Internetowe

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

Rozproszone technologie Web Services

Rozdział ten przedstawia jeden ze sposobów implementacji usług sieciowych XML i aplikacji klienckich w PHP. Oprogramowanie

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Wywoływanie metod zdalnych

Integracja Obieg Dokumentów - GiS Spis treści

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Zastosowanie informatyki w gospodarce Wykład 4

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

76.Struktura oprogramowania rozproszonego.

Rozproszone systemy internetowe

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Remote Method Invocation 17 listopada 2010

Mechanizmy pracy równoległej. Jarosław Kuchta

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Stan zaawansowania prac dotyczących zamówienia na opracowanie i wdrożenie rdzenia systemu e Urząd.

Podejście obiektowe do budowy systemów rozproszonych

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Równoległość w środowisku rozproszonym. Jarosław Kuchta Programowanie Współbieżne

Web Services. Technologie Biznesu Elektronicznego. Konrad Kunicki. Politechnika Wrocławska, Wydział Informatyki i Zarządzania

JAX-RS czyli REST w Javie. Adam Kędziora

Usługi sieciowe REST. Instytut Informatyki Politechnika Poznańska

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Tworzenie i wykorzystanie usług sieciowych

Wybrane działy Informatyki Stosowanej

Michał Jankowski. Remoting w.net 2.0

XML w elektronicznej wymianie danych i integracji aplikacji

SPECYFIKACJA WYMIANY DANYCH POMIĘDZY PROGRAMEM KS-APTEKA WINDOWS I SKLEPEM INTERNETOWYM FIRMY ZEWNĘTRZNEJ

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Programowanie współbieżne i rozproszone

XML-RPC: Zdalne wykonywanie procedur

Aplikacje RMI

Wprowadzenie do J2EE. Maciej Zakrzewicz.

SOA Web Services in Java

Nowoczesne zastosowania XML

Specyfikacja techniczna. mprofi Interfejs API

Komunikacja międzysystemowa

Ministerstwo Finansów

Programowanie współbieżne i rozproszone

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Automatyzacja procesów biznesowych Andrzej Sobecki. ESB Enterprise service bus

Web Service y w Javie

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

Mydło i spółka. Aplikacje rozproszone. Serwisy sieciowe Broker usług. Serwisy sieciowe. Serwisy sieciowe, WWW (Web Services) Internet

Programowanie obiektowe

Komponenty sterowane komunikatami

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

XML - wprowadzenie. <message> <text> Dobrze </text> </message> <message> <text> Źle </message> </text> <message> <message> <text> Źle.

XML w elektronicznej wymianie danych i integracji aplikacji

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

Nowoczesne zastosowania XML

Wprowadzenie do usług internetowych

Enterprise JavaBeans

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Aplikacje internetowe i rozproszone - laboratorium

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Raport z przebiegu prac czwartej grupy problemowej

Aplikacje RMI Lab4

UDDI & WSDL wykład 10

Zaawansowany kurs języka Python

Katalog książek cz. 3: Web Service

Specyfikacja interfejsów usług Jednolitego Pliku Kontrolnego

Web Service implementacja aplikacji klienta usługi

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Web Services (SOAP) Ćwiczenie 1

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Geneza elektronicznej wymiany danych (EDI) XML w elektronicznej wymianie dokumentów i integracji aplikacji. Pojedyncze rozwiązania.

Transkrypt:

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/

Plan rozdziału 244 Wprowadzenie do usług sieciowych Architektura SOAP Web Services Definition Language Rejestr UDDI Zastosowanie Oracle JDeveloper do tworzenia usług sieciowych

Architektura zorientowana na usługi 245 opublikuj dostawca usługi rejestr usług wywołaj znajdź klient 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

Elementy usług sieciowych 246 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

Elementy usług sieciowych 247 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

Zalety korzystania z usług sieciowych 248 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)

Ogólny model usług sieciowych 249 aplikacja klienta inerfejs XML (WSDL) 2 3 rejestr usług (UDDI) interfejs XML (WSDL) usługa sieciowa 1

Protokół SOAP 250 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

Architektura SOAP 251 klient SOAP serwer SOAP usługa SOAP metoda() wynik wynik metoda() konwersja odczytanie konwersja odczytanie XML XML HTTP XML XML 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.

Koperta SOAP 252 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

Przykład koperty SOAP 253 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" <?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>

Przykład koperty SOAP 254 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 <?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>

Przykład koperty SOAP 255 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 <?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>

Implementacja 256 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)

Architektura Apache SOAP 257 klient serwer SOAP klasa Java org.apache.soap org.apache.soap.rpc serwer WWW XML XML HTTP XML XML

Ręczna implementacja usługi 258 Kod usługi public class Kalkulator { public float dodaj(float x, float y) { return x+y; } } Deskryptor instalacji <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> Instalacja usługi java org.apache.server.servicemanagerclient \ http://miner.cs.put.poznan.pl/apache-soap/servlet/rpcrouter \ deploy deployment_descriptor.xml

Ręczna implementacja usługi 259 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();...

Web Services Description Language 260 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.

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

Automatyczna translacja dokumentów WSDL przez Client Proxy 262 Dokument WSDL oracle.wsdl.toolkit.proxygenerator 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ą.

Rejestr UDDI 263 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

REST 264 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

Podsumowanie 265 wyszukanie usługi WSDL WSDL XML UDDI XML Java Client Proxy aplikacja klienta Java wywołanie usługi wyniki usługa SOAP

Kalkulator.java public class Kalkulator { public Kalkulator() {} Klasa Java 266 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); }

Utworzenie usługi sieciowej 267

Wybór klasy źródłowej 268

Wybór metod dostępnych w usłudze 269

Wybór konfiguracji WSDL 270

Wygenerowanie klasy klienta proxy 271

Wybór parametrów klienta proxy 272

Wybór metod dla których zostaną wygenerowane wrappery 273

Instalacja usługi sieciowej 274

Fragment przykładowego klienta 275 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(); }