170 likes | 344 Views
API Java pentru servicii web. Autori : Ungureanu Marian Cristinel Ungureanu ( Sarbu ) Maria Grethien MAE, an 2. Index. Web Services Definitii Instrumente pentru servicii Web Axis Arhitectura Axis Soap si Serviciile Web WSDL Crearea unui serviciu web
E N D
API Java pentru servicii web Autori: Ungureanu Marian CristinelUngureanu (Sarbu) Maria GrethienMAE, an 2
Index • Web Services • Definitii • Instrumente pentru servicii Web • Axis • Arhitectura Axis • Soap si Serviciile Web • WSDL • Crearea unui serviciu web • Crearea clientului serviciului web • JSP • Implementarea unui modul de teste de evaluare pentru studenti • Design • Functionalitate
Web ServicesDefinitii • Serviciile Web nu sunt altceva decat 2 programe care schimba date intre ele pe Internetsau intranet- in format XML numit SOAP. • Acesta are o interfaţă descrisa într-un format procesabil de computer denumit WSDL (Web Services Description Language). • Serviciile Web din ziua de azi sunt in mod frecvent doar niste API (Application Programming Interfaces) sau API-uri web, care pot fi accesate printr-o reţea, cum ar fi internetul, şi executate pe un sistem remote care găzduieşte serviciile solicitate. • Alte sisteme pot interacţiona cu serviciul utilizând mesaje SOAP, de obicei transmise folosind HTTP cu o serializare XML în combinaţie cu alte standarde web. • Fig. ArhitecturaunuiWebService
Instrumentepentruservicii WebApache Axis • Pentru crearea serviciilor Web, avem nevoie de anumite instrumente software. In primul rand avem nevoie de un procesor care sa prelucreze mesajele SOAP primite si sa apeleze functii sau metode pe care aceste mesaje le indica. • Apache Axis (Apache Extensible Interaction System) este un proiect open-source care realizeaza implementarea formatului Simple Object Access Protocol: SOAP. • SOAP este folosit pentru interschimbarea datelor intr-un mediu distribuit. Soap este construit pe baza limbajului XML
Arhitectura Axis • Arhitectura Apache Axis este construita pe fundatia motorului de procesare a mesajelor SOAP. Acest motor de procesare accepta mesaje SOAP, le parseaza si apeleaza metode si functii din serviciul Web. • AxisEngine - acesta este elementul principal in procesarea SOAP si functioneaza ca si controler pentru alte componente. • MessageContext – clasa Messagecontext este ca un „wrapper” pentru cererile si raspunsurile SOAP; aceasta ofera informatie despre mesaje celorlalte componente din sistemul de procesare a mesajelor din AXIS. • Handlers,Chains - handler-ele suntblocurile de baza din sistemul AXIS. Un handler primeste un obiect MessageContex si efectueaza o anumita actiune pe baza continutului acestuia. Chain este un handler special care reprezinta un sir de alte handler-e. • Transport – componenta de transport ofera un mecanism pentru ca mesajele cerere sa ajunga la AXISEngine si pentru a trimite mesaje raspuns la client. • Serializers, Deserializers – acestia convertesc datele din forma lor nativa in XML, si invers. • Deployment, Configuration – AXISdefineste un descriptorbazat pe XML cunoscut ca Web Service Deployment Descriptor care defineste cum o instanta particulara a AXIS trebuie sa se comporte.
Soap siServiciile Web • Serviciile Web sunt un program client si server care schimba mesaje Soap intre ele peste Internet sau Intranet • conventie de a folosi datele intr-un anumit format pe web • Soap nu este dependent de o anumita platforma- Aplicatiile Microsoft sau Java pot comunica intre ele • Axisul se ocupa de transferul de mesaje intre client si server • tcpmon • utilitarulAxisului cu ajutorul caruia se pot vedea mesajele trimise intre client si server. • Acesta se palseaza intre client si server pentru a asculta traficul.
Pentru a porni acest utilitar se foloseste urmatoarea comanda: • >java -cp axis.jar org.apache.axis.utils.tcpmon 8081 localhost 8080 • In programul client trebuie schimbat portul 8080 in 8081,apoi se executa clientul si in fereastra tcpmon se pot vizualiza mesajele soap schimbata intre client si server.
Procesarea mesajelor SOAP • Principalulpunct de intrareintr-un serviciu Web este Axis. • Acest motor parseazamesajele si apeleazalanturile de handlerelepotrivite in conformitatecuinstructiunileoferitepentrudescarcareaserviciilor Web. • Dupa cum se poate observa in figura, Axis trebuiesa existe atat pe partea de client, cat si pe partea de server.
WSDL • Un serviciu web poate fi descris in WSDL = Web Service Description Language. • Axisare inclusa o caracteristica care produce fisierul wsdl pentru serviciul web. • Avand fisierul wsdl al unui serviciu web este foarte simplu sa se scrie programul clientcare sa acceseze serviciul web. • In programul client trebuie schimbat doar: • 1. URL servicului web • 2. numele metodei • 3. parametrii de intrare si iesire
Creareaunuiserviciu web • import java.util.*; • public class WServer { • HashMap standings = new HashMap(); • public WServer() { • // NHL - part of the standings as per 04/07/2002 • standings.put("atlantic/philadelphia", "1"); • standings.put("atlantic/ny islanders", "2"); • standings.put("atlantic/new jersey", "3"); • standings.put("central/detroit", "1"); • standings.put("central/chicago", "2"); • standings.put("central/st.louis", "3"); • } • public String getCurrentPosition(String division, String team) { • String p = (String)standings.get(division + '/' + team); • return (p == null) ? "Team not found" : p; • } • } • Cum trebuie procedat ca metoda getCurrentPosition sa fie disponibila ca serviciu web? • Fisierul WServer trebuie copiat in directorul Axis. • RedenumitWServer.jws(JWS – java web service). • Fisierul java nu trebuie compilat. Serviciul este inregistrat si diponibil.
Creareaclientuluiserviciului web • import org.apache.axis.client.Call; • import org.apache.axis.client.Service; • import javax.xml.namespace.QName; • import java.net.*; • public class WClient { • public static void main(String [] args) throws Exception { • Service service = new Service(); • Call call = (Call)service.createCall(); • String endpoint = "http://localhost:8081/axis/WServer.jws"; • call.setTargetEndpointAddress(new URL(endpoint)); • call.setOperationName(new QName("getCurrentPosition")); • String division = args[0]; • String team = args[1]; • String position = • (String)call.invoke(new Object [] {new String(division), new String(team)}); • System.out.println("Got result : " + position); • } • }
JSP • JSP (engl.Java Server Pages) este o tehnologiepentrugenerarea de paginidinamicebazatapeideeamixarii de cod Java cu cod HTML in paginile WWW. Este recomandatapentruaplicatiile WWW orientate peprezentare. • O altatehnologie de paginidinamicefoartefolosita la oraactualaeste PHP. PHP este un limbaj de scripting pentrupartea de server, inspirat din C. Codul PHP poatefiincorporat in paginile WWW. • JSP functioneazapeste o arhitectura de miniservere. • La incarcarea unui JSP, se genereaza automat codul java pentru miniserverul corespunzator si apoi acesta este compilat si incarcat in containerul de miniserveri. Acestproces se repetaori de cateoricodul JSP estemodificat. • <HTML> • <HEAD> <TITLE> Un exemplu cu JSP </TITLE> </HEAD> • <BODY> • <ul> • <% for (inti=0;i<20;i++) { %> • <li><strong><%= i %></strong>O linie</li></br> • <% } %>. • </ul> • </BODY> • </HTML>
Implementareaunuimodul de teste de evaluarepentrustudenti • Folosesteurmatoareletehnologii: HTML/CSS, XML/XSL (formatulMoodle XML), JavaScript, miniserveri Java, JSP, Servicii WEB, servere de BD. • Un scenariu generic al sesiunii student este urmatorul: • Acces la paginaprincipala • Autentificarea (login) a studentului • Vizualizareatestelordisponibile • Accesarea unui test si completarea acestuia • Vizualizarearezultatelorobtinute • Terminareasesiunii • Un scenariu generic al sesiunii profesor este urmatorul: • Acces la paginaprincipala • Autentificarea (login) a profesorului • Creareaunui test • Editarea unui test deja creat • Publicareaunui test • Vizualizarea rezultatelor obtinute de studenti • Terminareasesiunii
Functionalitate- Pagina de login sipaginastudentului- • Pagina de acces este o pagina comuna pentru profesor si studenti. Aceasta pagina contine un banner dinamic si ofera functionalitatea de autentificare. In urma autentificarii, utilizatorii sunt directionati catre pagini diferite, in functie de rolul acestora (profesor sau student). • Pagina principala pentru studenti contine urmatoarele functionalitati: • Selectare test • Vizualizarerezultate • Actualizareprofil • Terminareasesiunii de lucru (logout) • Paginilementionatesuntconstruitefolosind HTML (frame-uri). • Pentruconstruireabanneruluidinamic s-a folosit JavaScript.
- Paginaprofesorului- • Pagina principala pentru profesor contine bannerul dinamic, o pagina de index si o pagina de informatii. Din pagina de index sunt accesibile urmatoarele functionalitati: • Creare test • Editare test • Publicare test • Vizualizarerezultate test • Import test • Export test • Actualizareprofil • Terminareasesiunii de lucru (logout) • Pagina de Creare test contine urmatoarele informatii: Titlu, Tip item (True/False, Multiple Choice with Single Answer, Multiple Choice with Multiple Answer, Short Answer), Timpulalocattestului. • Pentrufiecare item se poate introduce: enunt, raspunsuri, raspuns(uri) corect(e), in functie de tipulitemului. • Pagina de Editare test include functionalitatea de Adaugare item