Sveiki, laipni lūdzam manas 3 rakstu sērijas pirmajā daļā par SOAP balstītu lietojumprogrammu izstrādi, izmantojot Java. Šī sērija nav detalizēts SOAP protokola apraksts, bet tikai īsa apmācība, lai parādītu, kā mēs varam izmantot Java un SOAP kopā. Pirmajā daļā es apskatīšu SOAP pamata anatomiju, Apache SOAP 2.2 instalēšanu un konfigurācijas problēmas ar Jakarta Tomcat 3.2.1, kā arī izstrādāšu, izvietošu un izpildīšu ļoti vienkāršu SOAP lietojumprogrammu. Sērijas 2. daļā es izstrādāšu sarežģītāku Java pupiņu SOAP pakalpojumu, bet 3. daļā es sniegšu jums priekšstatu par citiem sarežģītiem SOAP aspektiem. Tieši tad, sāksim.

SOAP anatomija

Vienkāršais objektu piekļuves protokols jeb SOAP pamatā ir paredzēts, lai nodrošinātu ļoti vienkāršu un vieglu mehānismu strukturētas informācijas apmaiņai decentralizētā un izplatītā vidē. Būtībā tas ir modelis datu kodēšanai standartizētā XML formātā, kas izmantojams dažādās situācijās, piemēram, ziņojumapmaiņas un attālo procedūru izsaukumos (RPC). SOAP sastāv no trim būtiskām daļām:

  • Aploksne: Šis ir augstākā līmeņa XML elements vai saknes elements XML kodētā SOAP ziņojumā. Aploksnē ir vai obligāti var būt šāda informācija par ziņojuma saņēmēju, ziņojuma saturu un ziņojuma apstrādes instrukciju.
  • Kodēšanas noteikumi: Kodēšanas kārtulas nosaka veidu, kā tiks veikta lietojumprogrammas definēto datu tipa gadījumu apmaiņa.
  • RPC: Attālās procedūras izsaukums vai RPC attēlojumi definē attālās procedūras izsaukumu un atbilžu uz tiem attēlošanas principu.

Lai saprastu trīs SOAP ziņojuma daļas, apskatīsim SOAP ziņojuma piemēru:

POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Satura veids: text/xml; charset="utf-8"Satura garums: nnnn SOAPAction:"Daži-URI"  DIS

Iepriekš minētajā piemērā ir parādīts tipisks SOAP ziņojums HTTP pieprasījuma saistīšanā. Elements Envelope ir nosaukumvietas kvalificēts (SOAP-ENV), lai to atdalītu no citiem lietojumprogrammas identifikatoriem. Šis elements satur arī informāciju par nosaukumvietas kodējumu. Aploksnes tiešais atvasinātais elements šajā piemērā ir ķermeņa elements. Šim elementam OBLIGĀTI jāatrodas SOAP ziņojumā, un tajā ir informācija par izsaucamās attālās procedūras nosaukumu (GetLastTraderPrice), kā arī tiek kodēti attālinātajai procedūrai nepieciešamie parametri. Šajā konkrētajā ziņojumā attālinātā procedūra pieprasa uzņēmuma nosaukumu (DIS), kura pēdējā tirdzniecības cena ir jāizgūst. Pēc izvēles elements Body satur informāciju par jebkuru kļūdu, kas radās RPC laikā, un ir kodēta elementā Fault. Elements Fault satur kļūdas/statusa informāciju ar SOAP ziņojumu un, ja tāds ir, var parādīties tikai vienu reizi kā elementa Body atvasinātais elements.

Sarežģītos SOAP ziņojumu gadījumos elementā Envelope var būt cits pakārtotais elements ar nosaukumu Header. Ja šis elements atrodas SOAP aploksnē, tam ir jābūt tiešajam elementa Envelope atvasinātajam. Elementā Header parasti var būt informācija par autentifikāciju, darījumu pārvaldību utt. Taču mūsu konkrētajā piemērā mēs neizmantotu šo galvenes informāciju. Līdzīgi, SOAP atbildes dokumentam būs līdzīga struktūra.

HTTP/1.1 200 OK Satura veids: teksts/xml; charset="utf-8"Satura garums: nnnn  34.5

Elements Envelope satur elementu Body, kas savukārt satur pieprasīto informāciju vai kļūdu virkni, ja servisa izsaukuma laikā rodas kļūme.

Vides iekārtošana

Kad esat lejupielādējis SOAP versijas 2.2 bināro izplatīšanu, izsaiņojiet to kādā sistēmas mapē. Lai gan SOAP var darboties ar jebkuru Servlet/JSP konteineru, mēs savam modelim izvēlēsimies Jakarta tomcat 3.2.1. Kad runcis ir iestatīts savā sistēmā,

  • Dodieties uz ziepju instalācijas direktoriju /lib un kopējiet failu soap.jar uz tomcat instalācijas direktoriju /lib.
  • Iegūstiet failu xerces.jar un ievietojiet to tomcat instalācijas direktorijā /lib. Tagad šeit ir punkts. Tomcat jau nāk ar parser.jar un jaxp.jar. Tādējādi radīsies potenciāls konflikts ar tikko instalēto xerces.jar. Lai no tā izvairītos:
  • Rediģējiet failu tomcat.bat un dodieties uz sadaļu, kurā tiek iestatīts klases ceļš. Novietojiet to priekšā xerces.jar klases ceļu, lai xerces.jar tiktu ielādēts pirmais klases ceļā.
  • Ievietojiet soap.war failu no SOAP binārā izplatīšanas lib direktorijas un ievietojiet to runča direktorijā /webapps. Tiklīdz jūs restartēsit runci, šis fails soap.war tiks paplašināts.
  • Tagad restartējiet runci.

Turklāt, lai jūs varētu izmantot komandrindas utilītu pakalpojumu izvietošanai un pārvaldībai, kā arī palaist SOAP klientu, ko mēs izstrādāsim, sistēmas CLASSPATH vides mainīgajā ir jāiekļauj šādi .jar faili:

  • ziepes.burka
  • aktivizēšana.jar
  • pasts.jar
  • xerces.jar