Crearea fișierelor wsdl primăvară

În cele din urmă, îmi voi împlini promisiunea și voi arăta unde se află fișierul WSDL cu definiția serviciului Web Map Evaluation atunci când joci poker. În secțiunea 15.2.1, am definit deja formatul pentru prezentarea datelor ca schemă în limba Schema XML, în fișierul PokerTypes.xsd. Înainte de a vă deplasa, reveniți la Lista 15.1 pentru a reîmprospăta memoria care arată definiția reprezentării datelor.







Acordați o atenție deosebită numelor pe care le-am ales pentru elementele XML care definesc tipurile de mesaje pentru serviciul web: EvaluateHandRequest și EvaluateHandResponse. Aceste nume au fost alese

nu întâmplător. Acestea au fost alese într-un mod vizat, ținând cont de sprijinul acordat în primăvara anului trecut de principiul avantajelor acordurilor de preconfigurare, care vor crea automat un fișier WSDL pentru serviciul de evaluare a combinațiilor de carduri.

Pentru a activa acest suport, trebuie să configurați DynamicWsdl11Definition.DynamicWsdl11Definition special pentru componente, care este utilizat de către servlet la MessageDispatcherServlet de creare a Nia WSDL din schema Găsește-pe limbajul XML Schema. Este foarte convenabil, din moment ce avem deja diagrama XML Schema care definește formatul de date schaya. Mai jos arată modul în care am configurat componenta DynamicWsdl11Definition în contextul Primăverii:

Componenta DynamicWsdl11Definition citește o descriere a schemei în limba Schema XML din fișierul PokerTypes.xsd, așa cum este definită de proprietatea schemei. Se caută fișierul pentru toate definițiile elementelor care se termină în cuvântul Solicitare sau răspuns. Și bazându-se pe presupunerea că aceste terminații corespund mesajelor trimise sau returnate prin operații de serviciu, ele creează elementele corespunzătoare în definiția WSDL, așa cum se arată în Fig. 15.7.

De exemplu, procesarea PokerTypes.xsd componentă fișier Wsdl11Definition sugerează că Dynamic elemente EvaluateHandRequest și EvaluateHandResponse descriu mesajele primite și trimise pentru operația numită EvaluateHand. Ca rezultat, se reproduce următoarea definiție a WSDL:

Crearea fișierelor wsdl primăvară

Fig. 15.7. Componenta DynamicWsdl11Definition reda automat definiția WSDL pentru serviciul Web,

bazată pe descrierea schemei din limba Schema XML care definește mesajele pe care le schimbă clienții cu serviciul







Rețineți că componenta DynamicWsdl11Definition a plasat un element cu numele "Evaluați" în element

cu numele de Poker. Numele elementului a fost preluat din proprietatea portTypeName.

Crearea fișierelor wsdl primăvară

În acest caz, se presupune că serviciul va funcționa pe computerul local, deci dacă îl veți încerca pe un computer la distanță, va trebui să schimbați adresa URL. Rețineți că adresa URL se termină cu linia / services în conformitate cu setările din element pentru componenta MessageDispatcherServlet.

De îndată ce am vorbit despre element , De asemenea, trebuie să adăugăm un nou element fișierului web.xml , astfel încât componenta MessageDispatcherServlet poate genera o definiție WSDL. Definirea unui element nou prezentate mai jos:

Acum servletul MessageDispatcherServlet poate genera automat (folosind DynamicWsdl11Definition) definiția WSDL a serviciului de evaluare a combinațiilor de carduri atunci când joacă poker. Singura întrebare care rămâne fără răspuns este unde să căutați definiția WSDL generată.

Răspunsul la această întrebare este în ultimul paragraf al acordului, urmat de MessageDispatcherServlet. Observați că am declarat componenta DynamicWsdl11Definition cu ID-ul de poker. Când componenta MessageDispatcherServlet primește o solicitare pentru un URL

/poker.wsdl. va arăta în contextul de primăvară pentru o componentă numită poker care creează definiția WSDL. În acest caz, el găsește componenta DynamicWsdl11Definition.

Utilizând o definiție predefinită WSDL

Componenta DynamicWsdl11Definition poate fi utilizată cu succes într-o varietate de situații, deoarece elimină nevoia

scrieți WSDL - definiți manual. Dar uneori este posibil să aveți nevoie de un control mai complet asupra definiției serviciului WSDL. În astfel de situații, poate fi de dorit să creați manual un fișier WSDL și apoi să îl încorporați în contextul de primăvară folosind SimpleWsdl11Definition:

componenta SimpleWsdl11Definition nu generează WSDL -opredele- a automat (fig. 15.9), se întoarce pur și simplu un WSDL-fișier, al cărui nume este specificat în proprietatea WSDL.

Crearea fișierelor wsdl primăvară

Fig. 15.9. Componenta SimpleWsdl11Definition returnează pur și simplu un fișier predefinit WSDL

Singura problemă cu utilizarea unui fișier predefinit WSDL (altul decât efortul necesar pentru a-l crea) este că este definit static. Aceasta creează complexitate în partea din definiția WSDL care specifică locația serviciului. De exemplu, aruncați o privire la următorul fragment (static) WSDL:

Pentru a face acest lucru, trebuie doar să adăugați parametrul cu numele transformWsdlLocations și true, iar restul componentelor va fi componenta MessageDispatcherServlet:

Implementarea serviciului

Așadar, am creat definiția serviciului, am implementat punctul final și am configurat toate componentele necesare ale cadrului Spring-WS. Acum, totul este pregătit pentru ambalarea și desfășurarea serviciului web. Deoarece am ales instrumentul Maven 2 pentru gestionarea proiectelor, crearea unui fișier WAR pentru o implementare ulterioară este redusă la efectuarea unei comenzi simple:

% mvn implementarea pachetului

Odată ce utilitarul mvn și-a încheiat activitatea, fișierul Poker-WS.war apare în directorul țintă, care poate fi implementat pe majoritatea serverelor de aplicații web.

Un exemplu de utilizare a cadrului Spring-WS de a crea un serviciu web a demonstrat doar jumătate din capabilitățile sale. A doua jumătate include un API client care implementează aceeași paradigmă bazată pe mesaje. Să vedem cum să folosim Spring-WS pentru a crea un client care utilizează serviciul de evaluare a combinațiilor de carduri atunci când joacă poker.







Articole similare

Trimiteți-le prietenilor: