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 Ez is része a CXF, és a kód jelzi egy osztály az infrastruktúra Spring (lásd a forrásokat.). Mint a példa a Metro, a servlet van kialakítva, hogy kezelje az összes kérés Web-alkalmazás (ez történik az 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 Ez csak egy adott shell konfigurációs bab-elem. elem a bab-elem, amely CXF társítható egy adott típusú objektum (egy osztály példánya org.apache.cxf.jaxws.EndpointImpl).

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.

Továbbra ismeretséget CXF