În Java 2 Platform, Enterprise Edition (J2EE) versiunea 1.4, vă puteți integra cu serviciile Web. Serviciile Web sunt acum o modalitate de a furniza servicii de platformă J2EE. Componentele J2EE existente pot fi ușor reprezentate ca servicii Web. Serviciile Web sunt acum disponibile pentru multe dintre beneficiile platformei J2EE, inclusiv portabilitatea, scalabilitatea, fiabilitatea și lipsa legăturii cu un singur furnizor. De exemplu, containerele J2EE oferă suport pentru tranzacții, conectivitate baze de date, gestionarea ciclului de viață și alte servicii - scalabile și necriptate.
Platforma J2EE oferă suport pentru serviciile Web prin API-ul JAX-RPC 1.1, care poate fi utilizat pentru a crea puncte finale ale serviciilor Web bazate pe SOAP. JAX-RPC 1.1 acceptă interacțiunea cu serviciile Web bazate pe WSDL și SOAP. Platforma J2EE suportă, de asemenea, JSR 109, un add-on pentru JAX-RPC, care este un model software pentru implementarea serviciilor Web și pentru implementarea serviciilor Web pe platforma J2EE 1.4. Printre altele, J2EE 1.4 suportă profilul WS-I Basic. Aceasta înseamnă că serviciile Web dezvoltate pe platforma J2EE sunt portabile nu numai între implementările J2EE, ci pot și să interacționeze cu orice servicii Web care respectă standardele WS-I.
Pentru a dezvolta servicii Web, un dezvoltator are de obicei nevoie de cunoștințe ample despre standardele și protocoalele XML (cum ar fi WSDL și SOAP), precum și o experiență considerabilă de programare. Cu toate acestea, pe platforma J2EE 1.4, cunoașterea WSDL și SOAP nu este necesară pentru a dezvolta servicii Web. Sistemul de rulare a serviciilor Web preia transformarea între Java și aceste standarde XML, eliberând astfel programatorul de detalii de la un nivel scăzut.
- O prezentare generală a serviciilor Web;
- Revizuirea JSR 109;
- Exemple de servicii web și clienți;
- Caracteristici ale dezvoltării serviciilor Web utilizând platforma J2EE 1.4.
- Exemple de cod pe care le puteți utiliza în propriile aplicații.
Prezentare generală a serviciilor web
Figura 1. Modelul publicare-descoperire-invocare în J2EE 1.4.
Din punctul de vedere al arhitectului software, un serviciu Web poate fi privit ca o arhitectură orientată spre servicii care constă în servicii care comunică între ele (și cu clientul) prin interfețe strict definite. Una dintre meritele arhitecturii orientate spre servicii este aceea că permite dezvoltarea de aplicații conectate în mod liber care pot fi distribuite prin rețea și pot fi accesate de la orice client.
În J2EE 1.4 SDK există instrumente care vă permit să creați rapid, să testați și să implementați servicii Web și clienți care interacționează cu alte servicii Web și clienți care rulează atât pe platforma Java, cât și pe alte platforme. În plus, vă permit să prezentați sub formă de servicii Web aplicații deja disponibile J2EE. Servlets și componentele EJB pot fi reprezentate ca servicii Web, care pot fi apoi accesate atât de clienți Java cât și de clienți non-Java. Aplicațiile J2EE pot funcționa ca și clienți de servicii Web și pot accesa alte servicii Web indiferent de modul în care sunt implementate.
J2EE 1.4 SDK
Cea mai bună modalitate de a afla ce este nou este pe platforma J2EE - descărcați J2EE 1.4 SDK și vă dați seama. J2EE 1.4 SDK include următoarele:
- Serverul de aplicații J2EE 1.4
- Platforma Java 2, Standard Edition (J2SE) 1.4.2_01
- Exemple de utilizare a J2EE (Java Pet Store, Java Adventure Builder, Smart Ticket etc.)
- Sun ONE Message Queue
- Server de bază de date PointBase
Implicit, SDK-ul J2EE 1.4 pe platforma Windows este instalat în c: \ sun \ AppServer și JDK 1.4.2_01 în c: \ sun \ AppServer \ jdk.
După instalare, trebuie să includeți căile spre directoarele c: \ sun \ AppServer \ bin și c: \ sun \ AppServer \ jdk \ bin în variabila de mediu Path. Aceste directoare conțin mai multe instrumente (inclusiv wscompile) care generează stuburi client sau cadre server sau o descriere WSDL bazată pe definiția interfeței de serviciu.
Procesul de dezvoltare și implementare a unui serviciu Web este strâns legat de sistemul runtime. De exemplu, desfășurarea unui serviciu Web pe Apache Axis diferă de implementarea aceluiași serviciu Web pe Apache SOAP sau pe orice altă platformă. Protocolul Java Community Process (JCP) JSR 109 (Implementarea serviciilor Web Services) definește crearea de servicii web portabile într-un mediu J2EE 1.4. Această specificație include:
- Dezvoltare: standardizează modelul de software pentru servicii Web și descriptorii de implementare.
- Implementare: descrie acțiunile de implementare așteptate de containerul J2EE.
- Servicii de publicare: definește modul în care WSDL devine disponibil clienților.
- Utilizarea serviciilor: Standardizează descriptorii de implementare a clienților și modelul de căutare JNDI.
Servicii Web J2EE
JAX-RPC este un API Java pentru XML RPC. Acesta poate fi utilizat pentru a crea clienți și servicii Web care utilizează XML și RPC. RPC funcționează prin protocoale XML, cum ar fi SOAP, definind structura de împachetare, regulile de codare și convențiile pentru prezentarea și răspunsul la apelurile RPC trimise ca mesaje SOAP prin HTTP. Avantajul JAX-RPC este că complexitatea mesajelor SOAP este ascunsă de dezvoltator. Iată cum funcționează:
Dezvoltatorul specifică proceduri la distanță (servicii Web) care pot fi apelate de clienți prin interfața Java și implementează această interfață. Pentru un client, serviciul Web arată ca un set de metode care implementează logica de afaceri în numele clientului. Clientul accesează serviciul Web utilizând interfața de serviciu endpoint, așa cum este definită în JAX-RPC. Dezvoltatorii de clienți creează un proxy generat automat (un obiect local reprezentând serviciul la distanță) și apoi apelând metode proxy. Dezvoltatorul nu trebuie să-și facă griji cu privire la generarea sau parsarea mesajelor SOAP, toate acestea făcute de runtime-ul JAX-RPC. Rețineți că serviciile Web J2EE pot fi apelate de orice client Web și că orice client J2EE poate accesa orice serviciu Web.
Figura 2. Un client Java care solicită serviciul Web J2EE.
Rețineți că clientul de servicii Web nu accesează niciodată serviciul direct, dar întotdeauna prin container. Acest lucru este bun deoarece permite serviciului Web să utilizeze funcționalitatea furnizată de container - și anume, securitate, logare și garanții QoS.
Lucrul cu JAX-RPC
Când lucrați cu JAX-RPC, rețineți că afișează tipuri Java pentru definițiile XML / WSDL. Desigur, este bine că nu trebuie să cunoașteți detaliile acestor mapări, dar trebuie să înțelegeți că în JAX-RPC nu toate clasele J2EE pot fi folosite ca parametri de metodă sau valori returnate. JAX-RPC acceptă următoarele tipuri de date primitive. boolean, octet, dublu, float, int, lung, scurt, și matrice. În plus, sunt acceptate următoarele clase de împachetare și clase de utilitate:
JAX-RPC acceptă, de asemenea, ceva numit un tip de valoare. ceea ce înseamnă o clasă care poate fi trecută între client și serviciu ca parametru sau valoare de retur. Tipul de valoare trebuie să respecte următoarele reguli:
- Trebuie să aibă un constructor public implicit.
- Nu ar trebui să implementeze java.rmi.Remote.
- Câmpurile sale trebuie să aibă tipurile acceptate de JAX-RPC. În plus, câmpul public nu poate fi finalizat sau tranzitor, iar câmpurile non-publice trebuie să aibă metodele getter și setter corespunzătoare.
Crearea serviciilor Web
Crearea de servicii Web în stilul XML-RPC utilizând platforma J2EE 1.4 poate fi împărțită în cinci etape:
- Proiectarea și codarea interfeței finale a serviciului Web.
- Implementarea interfeței.
- Creați un fișier de configurare.
- Generarea fișierelor necesare.
- Utilizați deploytool pentru a înfășura serviciul într-un fișier WAR și pentru al distribui.
1. Proiectarea și codarea interfeței finale a serviciului Web
Primul pas în crearea unui serviciu Web este dezvoltarea și codarea interfeței finale a serviciului Web, unde sunt declarate metode care pot fi apelate de clientul la distanță. La dezvoltarea unei astfel de interfețe, asigurați-vă că:
Mai întâi, creați orice catalog la alegere. Pentru exemplul următor, am creat directorul de aplicații în c: \ sun \ AppServer și subdirectorul build în el. Directorul de aplicații conține fișiere .java, construcție conține .class, precum și alte fișiere care vor fi generate automat.
Serviciul Web pe care îl voi crea va însuma două numere. Nimic special, dar suficient pentru a arăta cum sunt create, distribuite și utilizate serviciile Web. Lista 1 prezintă interfața punctului final al serviciului, o interfață comună Java care extinde interfața java.rmi.Remote. În această interfață, MathFace, este declarată o metodă, o adăugare care ia două valori întregi și returnează o valoare intregă care este suma a doi parametri întregi.
Cod 1: MathFace.java
2. Proxy-uri dinamice.
În acest caz, clientul solicită procedura de la distanță printr-un proxy dinamic sau o clasă creată în timpul executării. Rețineți că în cazul unui stub static, codul se bazează pe o clasă dependentă de implementare. În acest caz (proxy dinamic), această restricție este absentă. Primul pas este crearea unui fișier de configurare. Puteți folosi cel afișat în listare 6, schimbând numele pachetului la un dinproxy sau ceva asemănător. Creați subdirectorul dinamic-proxy în directorul de aplicații și în el se construiește subdirectorul.
Acum, generați interfețele necesare cu wscompile.
După toate acestea, puteți crea un client. Lista 8 conține un exemplu de implementare. Creează o copie a fabricii de servicii. Fabrica de servicii este utilizată pentru a crea un obiect de serviciu care acționează ca o fabrică proxy. După cum puteți vedea, metoda createService are doi parametri: adresa URL a fișierelor WSDL și a obiectului QName, care reprezintă numele serviciului calificat. Apoi se creează un obiect proxy și, în final, se numește metoda de adăugare a acestui obiect.
Cod 8: MathClient.java
Consola client - aplicație J2EE
Spre deosebire de clientul autonom, aplicația client J2EE poate obține interfața de serviciu utilizând căutarea JNDI. În acest caz, dezvoltatorul client definește pentru serviciul Web un nume logic JNDI (referință la serviciu). Conteinerul asociază implementarea interfeței de serviciu cu contextul mediului client java: comp / env, folosind numele logic al referinței serviciului:
Clientul se bazează pe un browser
În cele din urmă, luați în considerare cum să creați un client Web care să apeleze un serviciu Web dintr-un formular într-un browser (aici este folosit un stub static). Pentru a începe, aveți nevoie de un fișier de configurare similar celui afișat în listare 6. Înlocuiți-l cu nume de pachet, de exemplu, pe webclient. După aceasta, generați stub-ul clientului cu următoarea comandă:
Următorul pas este să creați un client web sub forma unui servlet sau a unei pagini JSP. Listele 9 și 10 arată implementarea JSP a clientului Web. Listei 9 este codul care emite formularul utilizatorului și acceptă parametrii. Codul din Lista 10 (stub static) este similar cu cel din lista 7.
Listing 9: math.jsp
Listing 10: add.jsp
Figura 4. Clientul JSP care invocă serviciul Web.
concluzie
Serviciile Web reprezintă următorul pas în evoluția Web-ului. Acestea oferă infrastructură și instrumente pentru automatizarea relațiilor B2B prin Internet. Integrarea serviciilor Web în platforma J2EE 1.4 simplifică sarcina de a crea și utiliza servicii Web, eliberând dezvoltatorul Java de la componentele de nivel inferior.