Webové služby v Jave: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d (Zamyká „Webové služby v Jave“ ([edit=sysop] (na neurčito) [move=sysop] (na neurčito)) [kaskáda])
 
(Žiaden rozdiel)

Aktuálna revízia z 18:35, 28. február 2010

Tnu wiki.png
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky
Fm wiki.png
Webové služby v Jave

Bakalárska práca


Autor:
Pedagogický vedúci: Ing. Juraj Ďuďák
Študijný odbor: Mechatronika

Akademický rok 2008/2009

Abstrakt

Webové služby umožňujú vytvárať zautomatizovanú sieť aplikácii na Internete. Cieľom práce je zoznámiť čitateľa s princípom webových služieb, s ich využitím na rôznych softvérových a hardvérových platformách. V práci je ukázaný konkrétny návrh webovej služby a to služby rozvrhu fakulty mechatroniky v programovacom jazyku Java. Ďalej je v práci napísaný a vysvetlený kód služby, ako aj jej spustenie na aplikačnom servery. Na konci práce je návrh a popis klienta webovej služby napísaného v jazyku PHP.

Abstract

Web services allow creating automated network of applications on Internet. Objective of this thesis is to familiarize reader with principle of Web services and their use on different software and hardware platforms. In the thesis concrete design of Web service – a schedule of faculty of mechatronics in Java programming language is shown. Then code of service, as well as the launch of service on application server is written and illustrated in this thesis. At the end of the thesis design and illustration of Web service client, written in PHP programming language.

Úvod

Dnešným hitom číslo jedna v informačných a komunikačných technológiách je servisne orientovaná architektúra (SOA), kde servisy znamenajú služby, ktoré daný systém publikuje, aby ich iné systémy mohli využívať. Preto sa čoraz častejšie skloňuje pojem webové služby.

Vývoj webových služieb môžeme rozdeliť do troch fáz. V prvej fáze bol zadefinovaný model klient/server. Kde klient mohol volať na jednom serveri pomocou vzdialených volaní (RPC). Potom prišla druhá fáza vývoja , ktorá bola založená na webe. Klienti mohli so servermi komunikovať cez preddefinované prostredie, za podmienky, že mali spoločný objektový model a komunikačný protokol. Tretia fáza predstavuje model webových služieb, kde sú dynamicky spojení poskytovatelia aj užívatelia služieb.

Obr. 1 Vývoj webových služieb

Rozdiel medzi webovou aplikáciou a webovou službou je ten, že webová služba slúži na komunikáciu stroja s iným strojom, pričom webová aplikácia slúži na komunikáciu medzi užívateľom a strojom. Aby mohli stroje medzi sebou komunikovať, musia komunikovať spolu rovnakým jazykom, ktorý predstavuje jazyk XML. Samotný jazyk však nestačí, je nutné definovať aj spôsob komunikácie. Preto webové služby dokážu posielať a prijímať XML správy pomocou štandardných internetových protokolov ako sú HTTP, FTP, SMTP alebo BEEP.

Úlohou tejto práce je vytvoriť webovú službu rozvrhu fakulty mechatroniky. V prvej kapitole si povieme, čo je to webová služba a ako sa tvorí. V druhej kapitole si popíšeme návrh a realizáciu služby, jej triedy a metódy. V tretej kapitole si popíšeme zdrojový kód klienta.

Webové služby

Definícia webovej služby

Webová služba je softwarová aplikácia definovaná pomocou URI, ktorej interfejsy a väzby je možné definovať, opísať a vyhľadať ako artefakty XML. Podporuje priamu interakciu s inými softwarovými prostredníctvom správ zapísaných v jazyku XML a prenášanými protokolmi internetu.[1]

Webovými službami rozumieme akúkoľvek službu, ktorá je umiestnená niekde na internete a ku ktorej môžeme pristupovať pomocou štandardných webových protokolov ako sú napríklad HTTP alebo SMTP. Komunikácia webových služieb prebieha pomocou štandardizovaného jazyka XML, čo nám umožňuje nezávislosť na platforme i na programovacom jazyku.

Webové služby majú tieto charakteristické znaky:

  • založené na XML – umožňuje webovým službám byť nezávislé od operačného systému, od väzieb na sieťové protokoly
  • voľná väzba – klient nie je viazaný so službou, takže pri zmene kódu na strane servera nie je nutná zmena na strane klienta, čo umožňuje väčšiu možnosť managementu softwaru
  • „coarse-grained“ (granularita) – dáta sa vymieňajú občas, po prebehnutí väčšieho množstva výpočtov
  • synchrónnosť a asynchrónnosť – pri synchrónnych službách klient dostane odpoveď až po vykonaní operácie. Pri asynchrónnych môže klient zadávať funkcie a postupne bude dostávať odpovede
  • podpora vzdialeného volania procedúr ( Remote Procedure Calls – RPC) – webové služby umožňujú klientovi volať funkcie a metódy na vzdialených objektoch pomocou XML protokolu.
  • podpora výmeny dokumentov – umožňuje výmenu kompletných dokumentov, od adries až po kompletné knihy
  • opísateľnosť – webová služba by mala byť aspoň minimálne opísaná v čitateľnej forme, aby ju klient mohol ľahko implementovať. Ak služba používa SOAP, je potrebné aby pomocou XML boli popísane verejné funkcie, argumenty a návratové hodnoty
  • objavitelnosť- webová služba by sa mala dať jednoducho nájsť vo verejnom registri

Použitie webových služieb

Je snaha vytvoriť automatizovanú sieť služieb, ktoré by medzi sebou komunikovali bez interakcie s užívateľom a tak užívateľa odbremenili od opakujúcich sa úkonov.

Máme spoločnosť STROJ s.r.o., ktorá chce zakúpiť software, ktorý zautomatizuje nákup súčiastok. Priebeh operácie by vypadal nasledovne:

  1. skladová aplikácia sa pripojí na centralizovaný register webových služieb a vyhľadá si službu, ktorá poskytuje objednávkový systém súčiastok. Register vráti informáciu o webovej službe spoločnosti Súčiastky a.s. a ukazateľ na popis tejto služby.
  2. skladová aplikácia sa spojí s objednávkovou službou Súčiastky a.s. a obdrží popis služby
  3. popis služby obsahuje všetky potrebné detaily na pripojenie sa so službou. Potom nie je pre skladovú aplikáciu problém automaticky objednávať potrebné súčiastky

Novým trendom v informačných technológiách je vývoj inteligentného agenta. Je snaha vytvoriť software, ktorý by predstavoval automatizovaného elektronického asistenta, ktorý by odbremenil užívateľa od opakujúcich sa operácii, pomáhal by pri plnení úloh a učil sa od užívateľa. Inteligentných agentov môžeme rozdeliť do niekoľkých skupín:

  • trhový agent – tento agent prehľadáva sieť www a získava informácie o tovare a službách. Dokáže zistiť najnižšiu cenu, dostupnosť a objednať Vám zvolený tovar až k Vám domov. Ukážkou môže byť Amazon.com
  • osobný agent – tento agent sa chová podľa vášho chovania. Môže čítať emaily, vyznačovať vám dôležité informácie na www stránkach, zisťovať informácie o zvolenom objekte alebo udalosti, hrať hru ako váš protihráč alebo vypĺňať formuláre za vás
  • monitorovací a dozorný agent – tiež známy ako „predvídavý“ agent. Slúži na pozorovanie a dohľad nad vecami. Napríklad NASA má takéhoto agenta, ktorý sleduje stavy skladov, dopĺňa chýbajúce súčiastky a dozerá na dátumy spotreby jedla v sklade. Takýto agent môže byť pripojený aj na komplexnú sieť počítačov a sledovať nastavenia jednotlivých počítačov v sieti
  • informačný agent – (data mining) tento agent slúži na to, že prezerá rôzne zdroje informácii a hľadá v nich zvolenú informáciu. A podľa zvolenej informácie dokáže vykonať aj určitú akciu

Webové služby sú ideálnym nástrojom na tvorbu takýchto inteligentných agentov, ktorý sú teraz v popredí výskumu informačných technológii. Aj z tohto dôvodu získavajú webové služby veľkú popularitu a svoje miesto v informačných technológiách.

V dnešných dňoch je skloňovaným pojmom v informačno-komunikačných technológiách SOA. SOA je architektonický štýl navrhnutý na dosiahnutie voľného prepojenia heterogénnych softvérových komponentov. Táto architektúra má niekoľko vrstiev, z ktorých jednu tvoria webové služby. Webové služby vytvárajú úžitkové metódy, operácie s entitami a vyhľadávacie metódy v systémových dátach. Webové služby umožňujú zabaliť logiku, integráciu kódu treťostranných nástrojov a implementáciu z aplikačnej vrstvy.

Technológie používané webovými službami

Existuje množstvo technológii, ktoré využívajú webové služby a ešte mnoho ich bude vyvinutých. Vízia webových služieb je celosvetová integrácia, ktorá však nie je možná, pokiaľ všetok software od rôznych firiem nebude podporovať základné technológie webových služieb. Medzi primárne technológie webových služieb patria:

  • Simple Object Access Protocol (SOAP) – zabezpečuje základnú obaľovaciu štruktúru pre transportovanie XML dokumentov cez štandardné sieťové protokoly ako sú HTTP, SMTP a FTP. Poskytuje jednoduchú štruktúru pre volanie RPC, čo umožňuje .NET klientovi vyvolať EJB´s (Enterprise Java Beans) a opačne Java klientovi vyvolať .NET Component pomocou SOAP
  • XML – RPC – je to jednoduchý protokol, ktorý využíva XML na volanie vzdialených procedúr . Požiadavka je zakódovaná do XML a poslaná pomocou HTTP POST.
  • Web Services Descripting Language(WSDL) – WSDL je XML technológia, ktorá popisuje rozhranie webových služieb štandardizovanou cestou. Popisuje vstupné a výstupné parametre služby, štruktúru funkcii a protokoly, pomocou ktorých služba komunikuje. Po prečítaní WSDL klient rozumie, ako služba funguje
  • Universal Description, Discovery, and Integration (UDDI) - poskytuje celosvetový register (XML) webových služieb. V registri si môžeme nájsť webovú službu pomocou mena, kategórie alebo identifikátora. Potom stačí len implementovať požadovanú službu do vlastného kódu aplikácie.

Tvorba klienta webovej služby

  1. Identifikovať a nájsť požadovanú webovú službu, najlepšie pomocou UDDI
  2. Nájsť popis služby. Pre SOAP je to WSDL dokument a pre XML-RPC treba nájsť zrozumiteľný popis pre integráciu služby.
  3. Napísať kód klientskej aplikácie. Pre WSDL je možnosť použiť automatického generovania kódu pomocou špecializovaných nástrojov.
  4. Spustiť aplikáciu, ktorá vyvolá webovú službu
Obr. 3 - Postup tvorby klienta

Tvorba webovej služby (servera)

  1. Napísať zdrojový kód aplikácie
  2. Obaliť zdrojový kód do SOAP alebo XML-RPC obaľovača (w rapper)
  3. Popísať službu. Pre SOAP službu treba napísať WSDL dokument
  4. Spojazdniť webovú službu. Záleží od vašich požiadaviek, či vytvoríte samostatný server alebo umiestnite na webový server
  5. Zverejnenie webovej služby. Zaregistrovanie do UDDI
Obr. 4 - Postup tvorby webovej služby

Popísanie webovej služby

Pri komunikácii webových služieb (web-services) je potrebné popísať komunikáciu týchto služieb štandardizovanou formou a na to slúži WSDL. WSDL popisuje, čo služba robí, ako vyvolať jej operácie a kde sa nachádza. WSDL definuje pomocou XML jazyka webové služby ako komunikáciu dvoch koncových bodov (endpoints) schopných výmeny správ. WSDL poskytuje dokumentáciu pre distribuované systémy a podáva návod pre automatizáciu detailov vyskytujúcich sa pri komunikácii aplikácii. Pre vývojárov client-side aplikácii WSDL popisuje všetky potrebné informácie, ktoré služba vyžaduje.

Podrobnejšie informácie o WSDL dokumente a jeho elementoch nájdete v dokumente WSDL-Web Services Description Language.pdf, ktorý sa nachádza na priloženom CD v adresári Dokumenty.

Java a webové služby

Firma Sun Microsystems vyvinula v roku 1995 objektovo orientovaný programovací jazyk Java. Java sa syntakticky najviac približuje jazyku C++. Java sa radí medzi hybridné jazyky. To znamená, že je súčasne prekladaná i interpretovaná. Program sa najprv preloží do špeciálneho tvaru nazývaného bajtkód (bytecode), ktorý potom analyzuje a interpretuje špeciálny program nazývaný virtuálny stroj Javy (Java Virtual Machine – JVM). Java patrí medzi najbezpečnejšie jazyky, preto je vo veľkej forme využívaná pre internetové aplikácie. To ju predurčuje pre tvorbu webových služieb.

Keďže Java je moderný jazyk preto sa stále dynamicky rozvíja. Stále sa vyvíjajú nové balíky, ktoré uľahčujú vytváranie webových služieb. Príkladom je balík javax.jws, ktorý umožňuje programátorovi služby sústrediť čas len na vývoj funkčného kódu služby a nemusí sa zaoberať o spracovávanie SOAP správy, vytváranie spojenia s klientom a iných úkonov súvisiacich s webovými službami. Viac informácii o SOAP sa nachádza v dokumente SOAP.pdf na priloženom CD v adresári Dokumenty.

Príklady existujúcich webových služieb

V dnešnej dobe sa na internete dá nájsť veľké množstvo webových služieb a medzi ne patria:

Odkazy

  1. Buranský, I.: XML a webové služby, Microsoft 2002