Serviciul web jax-ws

În acest post, vom examina un exemplu de creare a unui serviciu Web de specificații JAX-WS.
În primul rând, ce înseamnă cuvântul "specificație JAX-WS"? În general, acest lucru înseamnă că există un anumit standard numit JAX-WS sau dacă este un API complet Java pentru serviciile Web XML care stabilește anumite reguli sau un contract care trebuie respectate la implementarea acestuia. Astfel, în acest articol nu o vom implementa, în sensul contractului, vom folosi acest contract. Mai precis, vom folosi o implementare specifică a specificației JAX-WS. În lume există mai multe implementări ale specificației JAX-WS, de exemplu, Apache Axis2.
Acesta este principalul lucru pentru a înțelege este că JAX-WS nu este o bibliotecă, nu un cadru, nu o aplicație, este probabil această stație de andocare, care descrie specificațiile care trebuie să fie puse în aplicare cadru specific. În acest exemplu, vom crea serviciul nostru web abstractizând din cadre specifice, adică ne vom baza doar pe specificații. Ce înseamnă asta? Aceasta înseamnă că, conform specificației JAX-WS. Pentru a atribui o interfață unui serviciu web, trebuie să aplicați adnotarea @WebService fără să vă gândiți de unde provine această adnotare. Știm că adnotarea @WebService trebuie să fie, conform specificației JAX-WS. Și atunci, atunci când vine vorba de deboying pe server, atunci va trebui să decidă cu privire la punerea în aplicare a caietului de sarcini. În cazul nostru, asta pentru sticloanele. că pentru tomcat va fi utilizată implementarea JAX-WS RI. numai glasfishom ea iese din cutie, dar va trebui să punerea în aplicare a dokinut motan JAX-WS RI manual, dzharniki pe care am descărcat de la birou. site-ul jax-ws.java.net și le puneți în directorul servlet lib, pe care îl vom pune în servlet container tomcat.

Ce este serviciul Web

Partea de service. Structura proiectului

Să scriem un serviciu web care va calcula suprafața de forme geometrice, cum ar fi un cerc sau un dreptunghi. Pe partea clientului, se va determina care arie a formei pe care dorim să o primim și apoi datele despre figura geometrică vor fi transferate serviciului web, iar serviciul web va returna aria figurinei după prelucrarea datelor.
Aplicația de servicii web va consta din șase clase Java care vor include interfața Figura.java. entitățile Circle.java și Rectangle.java. factor de forme geometrice FigFactory.java. serviciul web PrintFigureService.java în sine și implicațiile acesteia PrintFigureImpl.java:

Structura proiectului

În primul cadru se pare că clasele Java sunt plasate în pachetul implicit, de fapt, fiecare dintre ele are un pachet de cuvinte cheie indicând faptul prinadlzhenost fiecare clasă în pachetul dvs., astfel încât după compilarea clase va fi extins în pachetele directorul dorit.
În Linux (cel puțin în Ubuntu / Mint) poți să faci asta, nu sunt șapte, așa că ai grijă.


În plus față de clasele Java, vor fi de asemenea două fișiere xml de configurare, acesta este web.xml pentru containerul servlet și sun-jaxws.xml unde vor fi informații despre obiectivele.
După asamblarea proiectului, directorul de construire cu arhiva de război gata pentru desfășurarea serverului va apărea la rădăcina proiectului:

Adăugați codul în directorul src.

Figure.java

Circle.java

Configurarea serviciului Web

Adăugați două fișiere xml în directorul WEB-INF al proiectului.

soare-jaxws.xml

Compilarea serviciului web

În mod tradițional, vom compila scriptul shell.

De ce nu folosesc instrumente mai convenabile, cum ar fi maven sau furnică. Pentru a înțelege toate fazele proiectului construi pe care colectorii se ascund, trebuie să faceți totul singur și apoi puteți merge la asamblori. Adică, în luptă este posibil și necesar să se folosească pickers, dar în timpul studiului este necesar să treceți toate etapele ansamblului proiectului.


Adăugați fișierul în rădăcina proiectului build.sh și adăugați următorul script în fișier:

După ce script-ul shell este adăugat, executați-l prin comanda:

Apoi, în rădăcina proiectului apare directorul de construire în care va fi localizată arhiva de război print-figure-service.war.
Întregul proiect al părții de server poate fi descărcat de pe link-ul:

Serviciul Web pe vitraliu

Implementarea serviciului Web pe tomcat

Dacă facem instalarea pe serverul de servere, pentru ca serviciul să fi câștigat, cu excepția unei implementări corecte, nu trebuie făcut nimic altceva. Dar pentru serviciu a câștigat un container motan servlet (acest lucru este un pic nu la fel ca epplikeyshn de server), ar trebui să dokinut încă unele biblioteci care implicit tomkatom nu merge. Această bibliotecă este una dintre implementările serviciului web JAX-WS. Pentru a face acest lucru, faceți acest lucru:

  1. Accesați site-ul jax-ws.java.net
  2. Descărcați librăriile JAX-WS RI pe hard diskul local (sau pe SSD local)
  3. Dezarhivați arhiva
  4. Lăsați conținutul directorului lib. pe care îl puteți găsi în directorul jaxws-ri fie în directorul lib al tomcat-ului, fie în directorul WEB-INF / lib al proiectului.

Puteți descărca întreaga parte a serverului potrivită pentru tokta de următorul link:

Test de servicii web

Partea clientului. Structura proiectului

După crearea serviciului și a copiei de rezervă, vom trece la partea clientului. Clientul la noi va fi format dintr-o clasă care va solicita zona unei cifre pe parametrii transferați.
Structura proiectului pentru client la prima vedere este simplă:

Dar, după rularea scriptului build.sh din structura directorului, în plus față de directorul de construcție, va apărea și directorul webservice:

Ce este acest director și ce este în el? Chestia este că atunci când scriptul rulează în el, se execută comanda wsimport:

Utilizând utilitarul wsimport, proiectul încarcă clase care permit clientului să interacționeze cu serviciul web, deoarece clientul nu poate interacționa cu serviciul web. În aceste clase este definită o logică care vă permite să vă conectați la serviciu, să apelați metode de la distanță, să parcurgeți parametrii, să primiți un răspuns și așa mai departe.

Client.java

Compilarea și rularea clientului

Adăugați fișierul build.sh la rădăcina proiectului client:

Întregul proiect al părții client poate fi descărcat de pe link-ul: