Wsdl fájlok létrehozása tavasszal

Végül teljesíteni fogom az ígéretemet, és megmutatom, hol van a WSDL fájl a Web Térkép Értékelő Szolgálat definíciójával a póker játék során. A 15.2.1. Szakaszban már definiáltuk a formátumot, amely az XML séma nyelvén, a PokerTypes.xsd fájlban bemutatott sémaként szolgál. Mielőtt továbblépne, térjen vissza a 15.1-es listához, hogy frissítse a memóriát, hogy az adatmegjelenítés definíciója hogyan néz ki.

Különös figyelmet fordítok az általam választott XML-elemekre, amelyek meghatározzák a webszolgáltatás üzenet típusát: EvaluateHandRequest and EvaluateHandResponse. Ezeket a neveket választották

nem véletlenül. Kiválasztották őket célzottan, figyelembe véve a Spring-WS támogatást az előkonfigurációs megállapodások előnyeinek elve alapján, amely automatikusan létrehoz egy WSDL fájlt a kártyakezelés-értékelési szolgáltatáshoz.

Annak érdekében, hogy ezt a támogatást, akkor be kell állítania a kifejezetten alkatrész DynamicWsdl11Definition.DynamicWsdl11Definition, amelyet a servlet MessageDispatcherServlet létrehozása Nia WSDL -FIND a rendszer az XML-séma nyelv. Ez nagyon kényelmes, mivel már van egy XML Séma-séma, amely meghatározza az adatmegjelenítés formátumát. Az alábbiakban bemutatjuk, hogyan konfiguráltam a DynamicWsdl11Definition összetevőt a tavaszi kontextusban:

A DynamicWsdl11Definition összetevő egy sémaleírást olvasható le az XML séma nyelvén a PokerTypes.xsd fájlból, ahogy azt a séma tulajdonság határozza meg. Keresi a fájlt az összes olyan definícióhoz, amely a Kérelem vagy Válasz szóban végződik. És azon a feltételezésen alapulva, hogy ezek a végek megfelelnek a szolgáltatási mveletek által küldött vagy visszaküldött üzeneteknek, létrehozzák a megfelelő elemeket a WSDL definícióban, amint az a 2. ábrán látható. 15.7.

Például, feldolgozási PokerTypes.xsd fájl komponens Dynamic- Wsdl11Definition azt sugallja, hogy elemek EvaluateHandRequest és EvaluateHandResponse leírják a bejövő és kimenő üzenetekben a művelet nevű EvaluateHand. Ennek eredményeként a következő WSDL definíciót reprodukálja:

Wsdl fájlok létrehozása tavasszal

Ábra. 15.7. A DynamicWsdl11Definition összetevő automatikusan lejátssza a webszolgáltatás WSDL definícióját,

amely az XML Séma nyelvén található séma leírásán alapul, amely meghatározza az ügyfelek által a szolgáltatással cserélt üzeneteket

Ne feledje, hogy a DynamicWsdl11Definition összetevő egy elemet helyez el az elemen az EvaluateHand névvel

a Poker néven. Az elem neve a portTypeName tulajdonságból származik.

Wsdl fájlok létrehozása tavasszal

Ebben az esetben feltételezzük, hogy a szolgáltatás a helyi számítógépen fog működni, ezért ha távoli számítógépen próbálkozik, akkor meg kell változtatnia az URL-t. Ne feledje, hogy az URL végződik a / services sorral az elem beállításai szerint a MessageDispatcherServlet összetevőhöz.

Amint beszéltünk az elemről , Új elemet kell hozzáadnunk a web.xml fájlhoz , hogy a MessageDispatcherServlet összetevő WSDL definíciót generálhasson. Új elem meghatározása alább látható:

Most a MessageDispatcherServlet szervlet automatikusan generál (a DynamicWsdl11Definition használatával) a kártya kombináció-értékelési szolgáltatás WSDL definícióját a póker játék során. Az egyetlen kérdés, amely továbbra is megválaszolatlan marad, hol kell keresni a generált WSDL definíciót.

A kérdésre adott válasz a megállapodás utolsó bekezdésében található, amelyet a MessageDispatcherServlet követ. Vegye figyelembe, hogy a DynamicWsdl11Definition összetevőt a póker azonosítóval deklaráltam. Amikor a MessageDispatcherServlet összetevő egy URL iránti kérelmet kap

/poker.wsdl. akkor megjelenik a Spring kontextusban egy olyan póker nevű összetevő, amely létrehozza a WSDL definíciót. Ebben az esetben megtalálja a DynamicWsdl11Definition összetevőt.

Előre definiált WSDL definíció használata

A DynamicWsdl11Definition összetevő számos helyzetben sikeresen használható, mivel megszünteti az igényeket

írja be a WSDL -et manuálisan. De néha lehet, hogy teljes körű ellenőrzésre van szükség a WSDL szolgáltatás definíciója felett. Ilyen esetekben kívánatos lehet manuálisan létrehozni egy WSDL fájlt, majd beágyazni a Spring kontextusba a SimpleWsdl11Definition használatával:

A SimpleWsdl11Definition összetevő nem hoz létre automatikusan WSDL definíciót (15.9. Ábra), egyszerűen visszaad egy WSDL fájlt, amelynek nevét a wsdl tulajdonság határozza meg.

Wsdl fájlok létrehozása tavasszal

Ábra. 15.9. A SimpleWsdl11Definition összetevő egyszerűen visszaad egy előre definiált WSDL fájlt

Az egyetlen probléma egy előre definiált WSDL fájl használatával (a létrehozásához szükséges erőfeszítés kivételével) az, hogy statikusan definiált. Ez összetettséget teremt a WSDL definíció azon részében, amely meghatározza a szolgáltatás helyét. Vegyük például a következő (statikus) WSDL-kódrészletet:

Ehhez csak add meg a paramétert a transformWsdlLocations és a true névvel, a többi komponens pedig a MessageDispatcherServlet összetevő lesz:

A szolgáltatás telepítése

Tehát létrehoztuk a szolgáltatásdefiníciót, megvalósítottuk a végpontot és konfiguráltuk a Spring-WS keretrendszer összes szükséges összetevőjét. Most minden készen áll a csomagolásra és a webszolgáltatás telepítésére. Mivel a Maven 2 eszközt választottam a projektmenedzsmenthez, egy WAR fájl létrehozása a későbbi telepítéshez egy egyszerű parancs végrehajtásával csökkenthető:

% mvn csomag telepítése

Miután az mvn segédprogram befejezte munkáját, a Poker-WS.war fájl megjelenik a célkönyvtárban, amely a legtöbb webes alkalmazáskiszolgálón telepíthető.

Példa arra, hogy a Spring-WS keretrendszer használatával webszolgáltatásokat hozzunk létre, csak a képességének fele bizonyult. A második fél olyan kliens API-t tartalmaz, amely ugyanazt a paradigmát valósítja meg, mint az üzenetküldés. Lássuk, hogyan kell használni a Spring-WS-t, hogy olyan klienst hozzon létre, amely a kártya kombináció-értékelési szolgáltatást használja a póker játék során.

Kapcsolódó cikkek