Web-szolgáltatások java megismerni CXF
Tovább Web-szolgáltatások infrastruktúrájának az Apache Software Foundation
Denis Sosnoski. Tanácsadó, Sosnoski Software Solutions, Inc.
Denis Sosnoski (Dennis Sosnoski) - alapítója és vezető a Java technológia tanácsadó cég szakértője - Sosnoski Software Solutions, Inc. szakosodott képzés és tanácsadás kérdésekben az XML és web-szolgáltatásokat. Már több mint 30 éves tapasztalattal rendelkezik a szakmai szoftverfejlesztés, szakterülete a szerver oldali XML és a Java-technológiát. Dennis a vezető fejlesztő a nyílt forráskódú JiBX XML Data Binding. épül alapján a Java osztály technológiák és kapcsolódó JibxSoap Web-szolgáltatások keretet. valamint az Apache Axis2 Web-szolgáltatások keretet. Ő is az egyik szakértő a fejlesztés JAX-WS 2.0 specifikáció.
Basics CXF
UI CXF sok közös interfészekkel stack Axis2 és a Metro. Mindhárom halom lehetővé teszik, hogy a Web-szolgáltatás, a meglévő Java ™ kódot, vagy generál Java kódot alapuló WSDL-leírást a használat vagy a szolgáltatás megvalósítására. Mint a többi halom, a CXF modellek szolgáltatási műveletek metódushívások és szerviz port (portType) - formájában interfészek.
Erről a sorozat
Hasonlóképpen Axis2, de ellentétben a Metro, CXF lehetővé teszi, hogy válasszon a különböző technológiák kötelező adatokat. CXF támogatja az adat kötelező JAXB 2.x par Metro, és egy kicsit jobb, mint a Axis2, mert lehetővé teszi, hogy konfigurálja JAXB létrehozásakor kódot WSDL-description szolgáltatás (Axis2 ezt nem teszi lehetővé). CXF is lehetővé teszi, hogy más módszerek kötési adatok, bár a támogatás nem olyan jól végrehajtani, mint Axis2. Például, hogy létrehoz a WSDL-fájl CXF csak akkor lehetséges, ha adatok felhasználásával kötési JAXB vagy XMLBeans.
Az előnyös módszer a szolgáltatás konfiguráció (amelyben CXF terminológiát hívják felületről) a CXF olyan jelölések JAX-WS 2.x, kiegészítve konfigurációs XML-fájlokat. Támogatás JAX-WS kommentárokat CXF a par Metro, ami ezt az infrastruktúra sokkal előnyösebb dolgozni JAX-WS, mint Axis2 (támogatás JAX-WS, amely néhány komoly korlátai, amelyek a cikkben tárgyalt „JAXB és JAX- WS Axis2 „). Mint más megvalósításai JAX-WS, CXF igényel WSDL-leírása a kliens oldalon a futás során.
Mint más halmok, CXF kérelmek feldolgozására és válaszok végzünk egy sor konfigurálható alkatrészeket. A CXF ezeket a komponenseket nevezzük elfogó (intercepters), és nem a feldolgozók (kezelő), de annak ellenére, hogy a különböző nevek, ezek a kifejezések azonos alkatrészeket. Mint a Metro, CXF a alapterhelésből támogatja a WS-Security és más fejlett technológiákat. Ellentétben a Metro, a JAR-CXF fájlok moduláris. Attól függően, hogy az alkalmazott technológia, és lehet választani, hogy tartalmazza az alkalmazás csak a szükséges fájlokat (a CXF könyvtárban a file / lib / WHICH_JARS leírja, hogy mi a JAR-fájlok szükségesek a különböző használati esetek). A hátránya ennek a modularitás, hogy a végén, lehet, hogy ahhoz, hogy egy hosszú listát a JAR-fájlok az alkalmazásnak szüksége, és a méltóság - az, hogy lehetővé teszi, hogy csökkentsék a méretét a legördülő alkalmazásokhoz.
Mint a Metro, CXF általában megköveteli, hogy összegyűjti a Web-szolgáltatás egy WAR-fájl telepítését helyett potenciálisan belül több szolgáltatás egy szerveren (a módszert használják a Axis2). CXF is rendelkezik egy beépített HTTP-kiszolgáló Móló, alkalmas a termelési környezetben. Ez több, rugalmas és hatékony alternatívája egy egyszerű HTTP szerver integrált Axis2 és a Metro.
például alkalmazások
- getBook visszatér részletes információt a könyvet. A könyv által azonosított International Standard Twin ISBN (International Standard Book Number).
- getBooksByType visszatér részletes információkat az összes könyvet egy bizonyos típusú.
- getTypes visszatér rendelkezésre álló könyveket.
- addBook hozzáad egy új könyvet a könyvtárból.
Használata kliensoldali
Az ügyfél kódot a kérelmet CXF azonos a használata JAX-WS Axis2 vagy Metro. Lépések az ügyfél összeszerelés is nagyon hasonló: az szerepel CXF közüzemi wsdl2java helyett tervezett JAX-WS wsimport programot. További információkért dolgozik a kliens kódot, olvassa el a cikk „JAXB és JAX-WS Axis2”.
Használata szerver oldali
A szerver a mi alkalmazás kódját CXF is azonos a használata JAX-WS Axis2 vagy Metro. A szerelési folyamat is nagyon hasonló a Metro. A Axis2, készek vagyunk, hogy telepíteni a szolgáltatást, ami a JAR-fájlt a szolgáltatási osztályok és az adatok típusát, majd kinyitotta a szolgáltatást azáltal, hogy a JAR-fájl a könyvtárban WEB-INF / servicejars Axis2 szerver. A metró és a CXF helyett létre kell hozni egy WAR-fájlt, amely tartalmazza a szolgáltatási osztályok és adatmodellek, könyvtár JAR-fájlok Metro vagy CXF és egy pár konfigurációs fájlok (amelyek közül az egyik az úgynevezett eltérően a két köteg). A fájl WEB-INF / web.xml konfigurálva közvetlenül feldolgozása servlet kérelmet. Az 1. listában látható fájl verzióját, hogy használják a kérelmet:
1. listán web.xml fájlt a minta felvitele
Amint azt az 1. lista fájl WEB-INF / web.xml ez csak egy szabványos konfigurációs fájl servlet, amely megmutatja a szerver web alapú alkalmazások (például Tomcat), hogyan befolyásolja a servlet. Ez a fájl hasonló a fájlt használják a például a Metro, bár CXF attribútum
Listing 2. Fájl CXF-servlet.xml a minta felvitele
Épület és futtatja a kódot
összeszerelési problémák
Mivel a Java SE 6 végrehajtás JAXB 2.x és JAX-WS 2.x (kivéve bővítmények) részévé vált a szabványos könyvtárak Java Runtime Environment (JRE). Ez azért történt, hogy ösztönözzék az e technológiák alkalmazása. Azonban ez a jó szándék Találtam egy csúnya hátránya: Most, ha szükséges, hogy a legújabb változatai ezek a könyvtárak módosítani kell már telepítve JRE.
build.xml fájlt ebben a példában használt alkalmazás, másolja a szükséges CXF JAR-fájlokat közvetlenül a szolgáltatást WAR-fájlt. Ezek közé tartoznak a JAR-fájlok JAXB és JAX-WS építeni a Java SE 5; de ha nem az összeállítás a Java SE 6, a közgyűlés eljárás az, hogy egy változata JAXB és JAX-WS a JVM telepítést. Ha a fájlok letöltését konfliktusok problémákat okozhat a kódot JAXB vagy JAX-WS Java SE 6 vagy újabb, ellenőrizze, hogy a disztró CXF kapcsolatos észrevételek kompatibilitást a különböző változatai a JVM.
A munka megkezdése előtt a minta alkalmazás, akkor le kell tölteni és telepíteni a rendszerre CXF jelenlegi verzió (lásd a forrásokat.). Az alkalmazás kódját lett tesztelve 2.2.5. Azt is meg kell szerkeszteni a build.properties található fájlt a gyökérkönyvtárban. Keresse meg a tulajdonság CXF-home, és állítsa be az utat, amely be van állítva CXF. Ha a teszt egy alkalmazás szerver a másik gépen futó, vagy a port nem az alapértelmezett, akkor változtatni kell az attribútumok a host-name és a gazda-port.
Ki kell építeni az alkalmazást a build.xml fájl Ant, nyisson meg egy konzolt a gyökér könyvtárába a kérelem kódot, és a hangya parancsot. A parancs elindítja az első wsdl2java programot (tartalmazza a CXF eloszlás), majd lefordítani a kódot a kliens és a szerver, és végül csomagolják a szerver kódot a WAR-fájlt. Akkor majd telepíteni a generált fájl CXF-library.war egy teszt szerver, és írja hangya fut a konzolon. fut a kliens alkalmazás. Az ügyfél sorozatát hajtja végre kéréseket a szerver, nyomtasson egy összefoglaló eredményét minden kérés. Mint már említettem, a szakasz, amely a kliens-oldali. szerelés közben, mi van konfigurálva naplózás CXF, hogy elkerüljük a részletes adatok kimenetét, ha az ügyfél nem indul.
Tavaszi CXF
Megjegyezzük, hogy a konfigurációs fájl CXF-servlet.xml, meghatározott 2. lista valójában konfigurálva bab-komponense a Spring Framework. Mint Ön is tudja, Tavasz - az infrastruktúra a nyílt forráskódú alkalmazások fejlesztését. Ez magában foglalja a különböző elemek és a könyvtárak, amelyek segítségével az alkalmazás. Kezdetben Spring alapján fekvő tartály Inversion of Control (NOB). Ez lehetővé teszi, hogy csatlakozni, és konfigurálja a JavaBean - alkatrészek a Java gondolkodási mechanizmus elérheti a tulajdonságokat a bab-objektumok futási időben.
Container Spring NOB, általában használt, hogy információt szerezzenek a függőségek XML-fájlokat. 2. lista CXF-servlet.xml fájl egy példa egy ilyen tavaszi konfigurációs fájl. elem
A fájl CXF-servlet.xml megadhat számos egyéb paramétereket, amelyeket nem használt egyszerű példát, beleértve a szolgáltatási üzenet áramlást. megtalálható a CXF dokumentációban (kezelőfelületeken / JAX-WS szakasz) részletes információkat JAX-WS konfiguráció.
Kivéve kommentárok JAX-WS, tavaszi alkalmazzuk az összes konfigurációs CXF verem, beleértve a szervezet a belső CXF üzeneteket. A legtöbb esetben, az összes beállítás részleteit automatikusan kezeli a konfigurációs XML-fájlok, amelyet közvetlenül az CXF (a contextConfigLocation paraméter a web.xml fájl 1. listában láthatja, hogy pontosan hogyan ezek a fájlok megadva). Azonban egy tipikus konfigurációban felübírálható vagy hosszabbítani segítségével saját konfigurációs fájlokat. Nem fogunk beszélni róla ebben a cikksorozatban, több információt ebben a témában forduljon CXF dokumentációt.