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
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:

Á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

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
Amint beszéltünk az elemről
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.

Á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 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.