Tipp küldése és fogadása szappan üzenetek segítségével saaj

Ez a tartalom a sorozat része: Board

Vigyázz az új cikkekre ebben a sorozatban.

Az üzenetek küldésére és fogadására képes szabványos formátumban az összes kölcsönható rendszer által elismert rendszer a webes szolgáltatások technológiájának lényege. Általában ez a formátum a SOAP. SOAP üzeneteket hozhat létre, és küldött kézzel, de sok a szükséges lépéseket, így a kapcsolat létrehozásával, vagy küld egy üzenetet, automatikusan végezhető segítségével SAAJ (SOAP mellékletekkel API for Java) - API, ami megjelent eredményeként a munkálatok a szoftver interfész továbbítására XML-üzenetek (Java API for XML Messaging - JAXM). Ez a cikk a szinkron SOAP üzenetek létrehozásának és küldésének lépéseit tárgyalja.

Az egész folyamat öt lépésből áll:

  1. SOAP kapcsolat létrehozása;
  2. SOAP üzenet létrehozása;
  3. üzenetek generálása;
  4. üzenetet küld;
  5. a válasz fogadása.

A SAAJ a Java Web Services Developer Pack 1.2 fejlesztői csomag része. A csomag tartalmaz egy Tomcat webszervert is, amelyen keresztül saját webszolgáltatásokat és demóalkalmazásokat telepíthet.

A Java Web Services Developer Pack 1.2 telepítése és konfigurálása nem jelent problémát, ha üzeneteket kíván küldeni a Tomcat webszerveren keresztül. Ha azonban a cikkhez hasonlóan szeretne üzeneteket küldeni külön alkalmazáson keresztül, akkor további műveletekre van szükség.

Most a saját alkalmazásával bárhonnan küldhet üzeneteket a rendszeredből.

A SOAP üzenet szerkezete

Kezdjük magunkkal az üzenetek szerkezetét. Általánosságban elmondható, hogy egy SOAP üzenet két fő részből álló héjból áll: a fejlécből és az üzenetből. Bár ezeknek az alkalmazásoknak az alkalmazása továbbra is az alkalmazás saját belátása szerint marad, az üzeneteknek egy olyan XML struktúrával kell rendelkezniük, amely hasonlít az 1. listán szereplőhöz.

Listázás 1. Minta SOAP üzenet

Ebben a példában a fejléc üres, és a teljes hasznos rész az üzenet törzsében van. Ezt az üzenetet a könyv árának kérésére használják.

Kapcsolat létrehozása és üzenet létrehozása

Az első lépés a kapcsolódási osztály egy példányának létrehozása és a kapcsolat beállítása (2. lista).

Listázás 2. Kapcsolat létrehozása

Az alkalmazás SOAP üzeneteket küldhet közvetlenül a SOAPConnection osztályon keresztül. amely már szerepel a SAAJ csomagban, vagy a JAXM csomag részét képező üzenetszolgáltatóval. SOAPConnection objektumot hoz létre a gyár segítségével.

A gyár maga is létrehozza az üzenetet (3. lista).

Listázás 3. Üzenet létrehozása
A verziók közötti különbségek

Ha egy másik változata SAAJ, mint például a könyvtár, amely része a tengely 1.2, akkor talán érdemes hívni addBodyElement módszer helyett addChildElement.

Először üzenetet hoz létre a MessageFactory objektum használatával. Ezen a ponton már tartalmazza a boríték- és fejlécszakaszokat. de még mindig üresek. A SOAPPart objektum borítékot tartalmaz. amelyben viszont az üzenet teste szerepel. Ezután változókat deklarálnak, amelyek tartalmazzák az összes szükséges kapcsolatot, különösen a SOAPBody-t.

Ezután fel kell töltenünk az üzenetetestet (a SOAPBody objektumot) az adatokkal, amint a 4. listán látható.

Listázás 4. Az üzenet testének kialakítása

A SOAP-üzenetek teste egy rendes XML elem, amelyben beágyazott elemeket, például getPrice-t helyezhet el. Ezután hozzáadhat egy isbn elemet és a megfelelő szöveget. Minden ugyanúgy történik, mint bármelyik DOM elem esetében.

A SAAJ lehetővé teszi egy SOAPPart-üzenet objektum közvetlen létrehozását egy külső fájlból. Például, ha az 1. listában szereplő üzenet XML tartalma megtalálható a prepped.msg fájlban. akkor az üzenet kézzel történő létrehozása helyett elérheti (5. lista).

Listázás 5. Üzenet létrehozása külső fájlból

A StreamSource osztályt általában XSL-transzformációkhoz használják, de ebben az esetben egyszerűen megnyitja a FileInputStream bemeneti fájlt. Ennek eredményeképpen kaptunk üzenetet küldeni.

Üzenet küldése

Amikor szinkron SOAP üzenetekkel dolgozik, a válasz küldését és fogadását egy lépésben hajtja végre (6. sor).

Listázás 6. Üzenet küldése
SOAPAction fejléc

Egyes webszolgáltatások hibát jelezhetnek, ha a szolgáltatás azonosításához az üzenetben lévő SOAPAction fejlécet kell megadni. Ehhez a MIMEHeaders objektumban a szükséges értéket a következőképpen kell beállítani:

MimeHeaders fejlécek =
message.getMimeHeaders ();
headers.addHeader ("SOAPAction",
"urn: szükségesSOAPAction");

A hívás () metódus blokkolja a program végrehajtását, amíg a válasz SOAPMessage objektumként nem érkezik meg.

Listázás 7. A kapott válasz leolvasása

Először is, mint mindig, az XSLT használatakor létre kell hoznia egy Transformer objektumot. Ebben az esetben csak meg kell jeleníteni az üzenet tartalmát, ezért a stíluslapot nem használjuk. A tartalom az üzenet SOAP részét jelenti, nem az egész üzenetet, amelyben a mellékletek továbbra is tartalmazhatnak. A feldolgozás előtt a héj és az üzenet törzsét is feloszthatja. A tartalom kimenete a System.out-ban történik (lásd az 1. ábrát), de elvileg az átalakítás eredményét bármely rendelkezésre álló kimeneti adatfolyamhoz továbbíthatja. Az átalakulás maga a szokásos módon történik.

1. ábra Kérés és válasz a SOAP-ban

Következő lépések

Egyszerű példánkban az üzenetet egyszerűen a szabványos kimeneti adatfolyamhoz továbbítjuk, de ugyanolyan sikerrel kaphatjuk meg a szükséges információkat az XML dokumentumból. Ezen kívül, bár ebben a cikkben bemutatja a szinkron üzenetek küldésére és fogadására, a JAXM felület, amely letölthető külön lehetővé teszi a használatát üzenetkezelési szolgáltató, amely aszinkron bevitelhez ProviderConnection tárgy helyett SOAPConnection. A szolgáltató az üzenetet az üzenet sikerességéig tárolja.

A JAXM támogatja a munkát olyan profilokkal is, amelyek megkönnyítik a speciális SOAP üzenetek, például a SOAP-RP vagy az ebXML létrehozását.

Források letöltése

Kapcsolódó témák