Tartalomjegyzék 1. Bevezetés.......................................................................................................................7 2. Szolgáltatás-Orientált Architektúra (SOA)...............................................................8 3. Webszolgáltatások......................................................................................................11 3.1. WSDL (Web Services Description Language).................................................12 3.1.1. Részei...........................................................................................................12 3.1.1.1. types......................................................................................................12 3.1.1.1.1. natív (primitív) adattípusok..........................................................12 3.1.1.1.2. saját (custom) adatípusok..............................................................12 3.1.1.2. portType ...............................................................................................13 3.1.1.3. message ................................................................................................13 3.1.1.4. binding .................................................................................................13 3.1.1.5. port .......................................................................................................13 3.1.1.6. service...................................................................................................14 3.2. SOAP (Simple Object Access Protocol) 1.1......................................................15 3.2.1. Header..........................................................................................................15 3.2.1.1. mustUnderstand attribútum..................................................................16 3.2.1.2. actor attribútum....................................................................................16 3.2.2. Body.............................................................................................................16 3.2.3. Fault..............................................................................................................16 3.2.4. SOAP 1.1 With Attachments........................................................................17 3.3. XOP és MTOM...................................................................................................18 3.3.1. XOP (XML-Binary Optimized Packaging)..................................................18 3.3.2. MTOM (Message Transmission Optimization Mechanism)........................18 3.4. UDDI (Universal Description, Discovery, and Integration)...........................19 3.5. WS-Security........................................................................................................20 3.5.1. Biztonság a szállítási rétegben.....................................................................20 3.5.2. Message Level Security (WS-Security vagy WSS).....................................20 3.5.2.1. Timestamp............................................................................................20 3.5.2.2. Username Token ..................................................................................21 3.5.2.3. PasswordText........................................................................................21 3.5.2.4. PasswordDigest....................................................................................21 3.5.2.5. Signature...............................................................................................21 3.6. WS-BPEL 2.0 (Web Services Business Process Execution Language)..........24 4. SOA Java EE platformon..........................................................................................27 4.1. JBI (Java Business Integration)........................................................................28 3
4.1.1. Előzmények..................................................................................................28 4.1.2. JBI komponensek.........................................................................................29 4.1.2.1. Service Engine (SE).............................................................................29 4.1.2.2. Binding Component (BC).....................................................................29 4.1.3. Üzenetkezelés...............................................................................................29 4.1.3.1. WSDL alapú üzenetmodell...................................................................29 4.1.3.2. Normalizált Üzenet...............................................................................30 4.1.3.3. Normalizált üzenetcsere.......................................................................31 4.1.3.4. NMR (Normalized Message Router)....................................................31 4.1.4. Menedzsment...............................................................................................31 4.2. OpenESB.............................................................................................................32 4.2.1. Komponensek...............................................................................................32 4.2.1.1. Service Engine......................................................................................33 4.2.1.2. Binding Component..............................................................................33 4.2.2. GlassFish alkalmazásszerver........................................................................34 4.3. Sun Java CAPS (Composite Application Platform Suite)..............................37 4.3.1. Integrációs termékek....................................................................................38 4.3.2. Infrastruktúrát biztosító termékek................................................................38 4.3.3. Fejlesztőeszközök.........................................................................................38 4.4. JAXP Java API for XML Processing................................................................39 4.4.1. SAX (Simple API for XML)........................................................................39 4.4.2. StAX (Streaming API for XML)..................................................................39 4.4.2.1. Iterator API...........................................................................................39 4.4.2.2. Cursor API............................................................................................40 4.5. JAX-WS 2.0 (JSR 224)......................................................................................41 4.5.1. WS, mint web komponens...........................................................................41 4.5.2. WS, mint üzleti logika komponens..............................................................41 4.5.3. Annotációk...................................................................................................42 4.5.3.1. @WebService - javax.jws.WebService................................................42 4.5.3.2. @WebMethod – javax.jws.WebMethod...............................................42 4.5.3.3. @WebParam – javax.jws.WebParam...................................................42 4.5.3.4. @WebResult – javax.jws.WebResult...................................................43 4.5.3.5. @SoapBinding - javax.jws.SOAPBinding...........................................43 4.5.3.6. WebServiceContext..............................................................................44 4.5.3.7. RequestContext.....................................................................................44 4.6. Apache CXF........................................................................................................45 4.7. WSS4J.................................................................................................................46 4.7.1. Kulcsgenerálás.............................................................................................46 4.8. JAXB (Java Architecture for XML Binding) 2.0 (JSR 222)...........................48 4
4.9. NetBeans.............................................................................................................52 4.9.1. Modulok.......................................................................................................52 4.9.1.1. BPEL module.......................................................................................52 4.9.1.2. Composite Application projekt.............................................................52 4.9.1.3. (CAPS) SQL module ...........................................................................52 4.9.1.4. XSLT module........................................................................................52 4.9.1.4.1. Request-Reply Service..................................................................53 4.9.1.4.2. Service Bridge...............................................................................53 4.9.1.5. IEP (Intelligent Event Processing) module (OpenESB).......................53 4.9.1.6. Egyéb modulok.....................................................................................53 4.9.2. File Binding Component..............................................................................53 4.9.3. SMTP Binding Component..........................................................................54 4.9.4. FTP Binding Component..............................................................................54 4.9.5. SOAP (HTTP) Binding Component ............................................................54 4.9.6. JDBC Binding Component..........................................................................54 4.9.7. JMS Binding Component.............................................................................54 4.9.8. BPEL Designer.............................................................................................55 4.9.8.1. BPEL nézetek.......................................................................................55 4.9.8.2. BPEL Mapper.......................................................................................55 4.9.8.3. Palette...................................................................................................55 4.9.8.4. BPEL Navigator...................................................................................55 4.9.9. WSDL Editor................................................................................................56 4.9.10. XML Schema Editor..................................................................................56 4.9.10.1. Támogatott tervezési minták (Design Patterns):................................56 4.9.10.1.1. Russian Doll................................................................................56 4.9.10.1.2. Salami Slice................................................................................56 4.9.10.1.3. Venetian Blind.............................................................................57 4.9.10.1.4. Garden of Eden...........................................................................57 5. Mintaalkalmazások...................................................................................................58 5.1. Apache CXF........................................................................................................59 5.1.1. cxf-jaxws......................................................................................................60 5.1.2. cxf-simple.....................................................................................................60 5.1.3. cxf-sec-un.....................................................................................................61 5.1.4. cxf-sec-sig....................................................................................................62 5.2. OpenESB BPEL.................................................................................................63 5.2.1. Előkészületek...............................................................................................63 5.2.2. BPEL folyamat.............................................................................................64 5.2.3. Kompozit alkalmazás...................................................................................65 5.3. Tesztelés, Ellenőrzés...........................................................................................66 5
5.3.1. soapUI..........................................................................................................66 5.3.2. TCPmon.......................................................................................................66
6
1. Bevezetés A Szolgáltatás-Orientált Architektúra (SOA), sokszor mint buzzword1 él a köztudatban. Legtöbbször felkapott, kisarkított, valós tartalom nélküli marketing promóciókban találkozhatunk a koncepcióval, pedig jóval többről van szó. Az integrációs kényszer, az alkalmazások növekvő méretének és funkcionalitásának kezelése egyre több erőforrást, időt és pénzt emészt fel, ami hosszú távon megengedhetetlen. Ennek megoldását tűzte ki célul a SOA, de leginkább annak konkrét megvalósításai, implementációi. Egyetlen komoly informatikai cég sem mehet el ezen problémák mellett, és nem hagyhatja figyelmen kívül a SOA implementációk nyújtotta előnyöket. Jóval többről van szó, mint technológiai „átszervezésről”, itt a szemléletmódról, a kifejlesztett koncepcióról, és annak alkalmazásáról van szó. A diplomamunkámban bemutatom az elképzelés főbb irányvonalait, illetve a Java platform sokrétű, magas szintű képességeit. A második fejezet bepillantást enged a SOA alapfelvetésébe, főbb tulajdonságaiba, és előnyeibe. A harmadik fejezetben áttekintem a SOA legkézenfekvőbb megvalósítójaként számon tartott webszolgáltatásokat, és azok alappilléreit, kiegészítő,- és támogató technológiáit. A piacon elterjedt szabványos, platformfüggetlen megoldásokat foglaltam össze ebben a részben. Bemutatom továbbá a webszolgáltatások egyik legfontosabb tényezőjét, a különböző biztonsági eljárásokat, a későbbi fejezetekben pedig azok alkalmazásait is. A negyedik fejezet a Java platform által nyújtott lehetőségekről szól. A legmagasabb absztrakciós szinttől (Java Business Integration) haladva, a konkrétabb, utóbbi megvalósításán (OpenESB) át a webszolgáltatások, és azok alapját képező XML feldolgozásig bezárólag térképeztem fel a platform funkcióit. Ebben a fejezetben kapott helyet a NetBeans integrált fejlesztőeszköz (IDE) célspecifikus funkcióinak leírása is. Az ötödik fejezet a kifejlesztett (minta)alkalmazások bemutatásáról szól, ami a platform és a NetBeans által nyújtott lehetőségek egy szűk részhalmazát veszi górcső alá.
1 buzzword = divatszó, divatos/felkapott szakkifejezés
7
2. Szolgáltatás-Orientált Architektúra (SOA) [1], [2] és [3] alapján. A Szolgáltatás-Orientált Architektúra (Service Oriented Architecture), vagy röviden SOA mint újrahasznosítható tervezési mintát, architektúrális koncepciót lehetne legjobban jellemezni. Alapja a rendszerek közti laza csatolás, ezáltal elérhető az egymástól való függés minimalizálása, ami gyártófüggő megoldások között egy kritikus szempont. SOA jellemzői: ●
Szabványok alkalmazása
●
Lazán csatoltság
●
Újrafelhasználhatóság és hozzáférhetőség
●
Szolgáltatásleírás
Interfészek
Üzenetek, és üzenetcsere módja
Folyamatok interakciója
Szinkron/Aszinkron
A gyorsan változó üzleti élethez gyors és költséghatékony alkalmazkodást kell biztosítania az IT-nek. Reagálnia, válaszolnia kell, akár a meglévő alkalmazások módosításával, licencelésével, akár újak kifejlesztésével. Az integrációs szükség robusztus nagyvállalati (enterprise) környezetben egyre több időt és pénzt emészt fel. Ezáltal a meglévő, sokszor „kamra” fejlesztések (silók), az egyedi integrációs megoldások, és az ezek járulékos következményeként az üzemeltetést/módosítást végző „guruk” leváltása egyre égetőbb szükséggé válik. A heterogén rendszerek kommunikációjának biztosítására egy megfelelő, közel minden részletre alkalmazkodó, de az eddigi megoldásoknál feltétlen jobb, általánosítottabb megoldásra próbál választ adni a SOA. SOA definíció: „A Service Oriented Architecture (SOA) egy integrált szoftver infrastruktúra és tervezési megközelítés, amely eszközként használja fel a web technológia szabványokat üzleti funkcionalitás és megosztott szolgáltatások megvalósítására.” [4] Különböző szolgáltatások összefogása a cél, az üzleti (külső) kényszer mentén. A szolgáltatások kommunikációja és összehangolása (orchestration) nem szállítófüggő (vendor lock-in), szabványos elemekből épül fel.
8
1. ábra. SOA előtt és SOA után Forrás: http://www.sun.com/products/soa/benefits.jsp A SOA alkalmazások segítségével a megvalósítandó üzleti folyamatok költségének és komplexitásának csökkentésével egyszerűbbé válik azok menedzsmentje és újrafelhasználhatósága. A komponensek (legtöbbször heterogén alkalmazások) mint szolgáltatások, igénybe vehető üzleti folyamatokként jelennek meg. A SOA a teljes vállalati működésre hatással van, ami a szigetmegoldások teljes leváltásával ez törvényszerű. Szolgáltatásalapú rendszer bármi lehet, ami az alapelveket maradéktalanul teljesíti, például MoM, a legelterjedtebb mégis a webszolgáltatások (amik nyelvfüggetlenek, szabványokon alapulnak, valamint gyors fejlesztést tesznek elérhetővé). Szükséges továbbá egy kommunikációs busz (Enterprise Service Bus – ESB), illetve a szolgáltatásösszehangoló „karmester” (orchestration) motor, aminek segítségével a komponensek egymás szolgáltatásait használhatják, kéz-a-kézben. Ezek (ahogy az összes többi is) elvek, koncepciók, architektúrák. Konkrét specifikáció például a JBI vagy a BPEL. Előnyök: ●
●
●
Költségek csökkentése
Meglévő alkalmazások funkcionalitásainak újrafelhasználása
Fejlesztők termelékenységének növelése
Üzemeltetési hatékonyság növelése
Adatmegosztás divíziók, részlegek közt
Gyakori üzleti folyamatok automatizálása
Új üzleti lehetőségek kifejlesztése
9
Új és jobb szolgáltatások az ügyfél felé
Gyorsabb reakció a piac változásaira
Gartner: „2008-ig a vállalatok több, mint 60%-a a SOA elvei szerint építi majd üzletileg kritikus rendszereit és alkalmazásait.” [5] Open Source SOA: Előnye az alacsony belépési költség, biztosítja az átlátszóságot. Közösségi innovációknak ad lehetőséget, de mégis ezek a rendszerek tipikusan a zárt, és nyílt forrású megoldások egyvelege. A kormányzati rendszerek nagy részében már most találhatók nyílt forrású megoldások (Apache, Sendmail, Linux, MySQL, Perl). SOP (Service Orchestration Point): üzleti folyamat hosztolása, ami közvetít a különböző, heterogén szolgáltatások között. SOA előnyök különböző nézőpontokból: ●
Chief Financial Officer – CFO (Pénzügyi igazgató) Gyorsabb befektetési megtérülés, ROI (Return of Investment).
●
Developers (Fejlesztők) Kevesebb karbantartás, magasabb produktivitás.
●
Business Analyst (Üzleti elemzők) Folyamatok és szolgáltatások újrafelhasználása.
●
Chief Information Officer – CIO (Informatikai vezető) Gyorsabb piacra lépés, kevesebb hátralévő munka.
●
Line of Business – LoB (Szervezeti üzletágrendszerek) Gyorsabb reagálás az üzleti igényekhez .
●
Chief Technology Officer – CTO (Technológiai igazgató) Meglévő infrastruktúra felhasználása, jövőbeli projektek alapjainak definiálása.
A SOA segítségével az üzleti megközelítésből származó legfőbb cél, a meglévő infrastruktúrából származó integrációs költségek (Cost of Integration),- és az összes költség (TCO) csökkentése elérhetővé válik. Közelebb hozza az üzleti és technológiai folyamatokat. Üzleti folyamat: Az az út, ahogy a cég eléri a nagyobb üzleti célt. Megfelelő sorrendben végrehajtott egyedi task-ok sorozata. A SOA az IT természetes fejlődési útjának egy következő lépcsője.
10
3. Webszolgáltatások Hálózaton keresztül elérhető szolgáltatások, műveletek létrehozását teszi lehetővé, interfész alapokon, XML üzeneteken keresztül. Rugalmas, skálázható, módosítható alkalmazások készíthetők segítségével. Nyílt szabványokat és protokollokat alkalmaz, biztosítja az együttműködést (interoperability). A fekete doboz alapú tervezés elfedi megvalósításának részleteit, a metódusok meghívása interfészeken keresztül történik. Tipikusan állapotmentes, implementációs nyelvtől és platformtól független, lazán csatolt, komponens szemléletű, üzenetalapú. Ugyanúgy ahogy az igénybe vevő sem tud semmit a szolgáltatás konkrét implementációs részleteiről, úgy az igénybe vett szolgáltatásnak sem kell semmit tudni az őt igénybe vevőről. Így elérhető a lazán csatolt komponensekből felépülő alkalmazások kifejlesztése.
11
3.1. WSDL (Web Services Description Language)
3.1.
12
WSDL (Web Services Description Language)
[6] és [7] alapján. Szolgáltatások leírás XML nyelven, platform,- és implementációs nyelvtől függetlenül, szabványos módon. Kommunikációs végpontokat (port) definiál, továbbá: ●
műveletek és üzenetek absztrakt definiálása
●
binding szállítási (hálózati) protokollokhoz és üzenetformátumhoz (SOAP over HTTP)
Gépek által (is) olvasható, értelmezhető. A partnerek között automatikus a műveletleírás,- és hívás, a felderítés.
3.1.1.
Részei
A <definition> gyökérelem gyermekei. 3.1.1.1.
types
A felhasznált adattípusokat (XML schema elemek) definiálja. 3.1.1.1.1.
natív (primitív) adattípusok
Például: <element name="MyString" type="string" />
(A teljes lista megtalálható itt: http://www.w3.org/TR/xmlschema-2/#built-in-datatypes) 3.1.1.1.2.
saját (custom) adatípusok
Például a Customer objektum leírása:
<sequence> <element name="customerID" type="int" minOccurs="1" /> <element name="firstName" type="string" minOccurs="1" /> <element name="lastName" type="string" minOccurs="1" />
A minOccurs és a maxOccurs szabályozza az elemek számát a sequence-ben. (pl.: minOccurs = 0 opcionális az elem) Természetesen nem csak beágyazva lehet a sémákat definiálni, meglévőket a következő módszerrel lehet importálni:
3.1. WSDL (Web Services Description Language) 3.1.1.2.
13
portType
A webszolgáltatás absztrakt interfészdefinícióját tartalmazza, például: <wsdl:portType name="CustomerPortType"> <wsdl:operation name="findCustomer"> <wsdl:input message="tns:findCustomer" /> <wsdl:output message="tns:findCustomerResponse" /> <simple:inInterceptors>
A speciális WSS4J interceptor tulajdonságai definiálják a várt biztonsági fejléceket (UsernameToken, Timestamp), illetve a jelszó típusát (PasswordDigest), ami kódolt. Továbbá tartalmazza az implementációt tartalmazó Java osztályt, mint Spring bean. Az
interceptornak
kötelezően
implementálnia interfészt:
kell
javax.security.auth.callback.CallbackHandler
public class PasswordCallbackHandler implements CallbackHandler{ public void handle(Callback[] arg0) throws IOException, UnsupportedCallbackException{ WSPasswordCallback pc = (WSPasswordCallback) arg0[0]; if (pc.getIdentifer().equals("czaki")){ pc.setPassword("jelszo"); } }
a
5.1. Apache CXF
62
A metódus összehasonlítja az adott nevet, és az adott nyílt jelszót az üzenetben található információkkal.
5.1.4.
cxf-sec-sig
Az alkalmazás digitálisan aláírt üzenetet vár. A kliens az üzenetet a saját privát kulcsával írja alá, a szerver pedig a kliens publikus kulcsával dekódolja az üzenetet. Kötelező SOAP fejléc: ●
Signature
A definíció tisztán a Spring context-ben valósul meg a következő módon:
<property name="properties"> <map> <entry key="action" value="Signature" /> <entry key="signaturePropFile" value="server_sign.properties">
A kötelezően a classpath-on található server_sign.properties tartalma: org.apache.ws.security.crypto.provider=org.apache.ws.security.compo nents.crypto.Merlin org.apache.ws.security.crypto.merlin.keystore.type=jks org.apache.ws.security.crypto.merlin.keystore.password=kliens org.apache.ws.security.crypto.merlin.keystore.alias=kliens org.apache.ws.security.crypto.merlin.file=kliens_publikus.jks
A properties fájl tartalmazza a szerveren található keystore (szintén a classpath-on kell lennie) hozzáférhetőségi információit. A keystore tartalmazza a publikus kulcsokat.
5.2. OpenESB BPEL
5.2.
63
OpenESB BPEL
A következő mintaalkalmazás a NetBeans, az OpenESB és BPEL lehetőségeinek egy részhalmazát mutatja be. A fejlesztés tisztán NetBeans-ben történt (OpenESB pack), ami roppant hasznos és kényelmes, de megfelelően testreszabható (például a beépített Ant scriptek segítségével) funkciókkal rendelkezik. Az alkalmazás a publikus interfészén keresztül SOAP üzenetet vár, ami három String típusú elemet tartalmaz, amik a következők: ●
name
●
tag
●
message
Amennyiben a tag tartalmazza a teszt Stringet, úgy az üzenet tartalma, feladója, érkezési ideje egy beállított könyvtárba (C:\Temp), egy adott fájlba (messages.xml) íródik. A klienshez egy RENDBEN tartalmú üzenet érkezik. Ha a tag elem nem tartalmazza a teszt Stringet, úgy a klienshez egy Hibás azonosító: tag tartalmú üzenet érkezik. Illetve egy adott e-mail címre a hibás feldolgozásról levél érkezik.
5.2.1.
Előkészületek
A kezdeti wsdl kidolgozását a NetBeans grafikus tervezője segítségével is könnyedén össze lehetett volna állítani, én mégis a megfelelő annotációkkal ellátott (JAX-WS és JAXB) POJO alapú generálást választottam. Használt annotációk – JAX-WS: ●
@WebService
●
@WebMethod
Használt annotációk – JAXB: ●
@XmlRootElement
●
@XmlElement
A generált wsdl-t és a hivatkozott, JAXB által generált XML Schema-t a BPEL Moduleba másolása után tudjuk használni. A szolgáltatás elérhetőségét még módosítani kell a következőre: <soap:address location="http://localhost:$ {HttpDefaultPort}/NewWebServiceService/NewWebServicePort"/>
A wsdl a BPEL folyamat (orchestration) „nyitánya”, ehhez a NetBeans generál egy wrapper wsdl-t, ami az eredetit importálja. Ez lesz a
aktivitásban használt partnerlink, amit a kompozit alkalmazásunk publikál a külvilág felé, ezt lehet kívülről meghívni. A port megadása speciális, az alapértelmezett portot helyettesíti be a NetBeans, ami nem egyenlő az alapértelmezett 8080-as porttal. A BPEL modul tartalmazza partnerszolgáltatások wsdl-jét is.
a
BPEL
folyamatot,
illetve
a
megfelelő
5.2. OpenESB BPEL
64
Az alkalmazás deployolásához létre kell hoznunk továbbá egy Composite Application projektet is, amihez hozzáadhatjuk a BPEL modult.
5.2.2.
BPEL folyamat
A folyamatban a következő partnerszolgáltatások vesznek részt: ●
Client:
●
Eredeti partnerlink
Invoked:
Fájl BC
SMTP BC
A folyamat aktivitással kezdődik, ami a kliens partnerlinktől várja a kérést.
6. ábra. NetBeans BPEL Designer A folyamat a után közvetlenül elágazik (), a BPEL vizsgálja a feltétel bekövetkezését (tag nem tartalmazza: teszt), aminek megfelelően meghívja az SMTP partnerszolgáltatást, majd a aktivitással visszaküldi a sikertelenségről szóló üzenetet a klienshez.
5.2. OpenESB BPEL
65
Amennyiben a tag tartalmazza a teszt stringet, úgy a BPEL folyamat meghívja a File BC partnerszolgáltatást, és visszaküldi a sikeres végrehajtásról szóló üzenetet. Mindegyik és előtt az aktivitás hívódik meg, ami feltölti a partnerszolgáltatásoknak küldött üzenet tartalmát, a kliensoldalról érkező üzenetből. A NetBeans az aktivitás kapcsán történő változók feltöltését kényelmes grafikus szerkesztővel támogatja, aminek neve BPEL mapper.
5.2.3.
Kompozit alkalmazás
Ez a JBI runtime számára deployolható komponens. A projekt deployolása után tudjuk hozzáadni és futtatni a megfelelő TestCase-ket, azokon belül pedig a szolgáltatásnak küldött üzeneteket. A projekt tartalmazza a TestCaseJo, és TesztCaseRossz tesztelési eseteket, amik a BPEL folyamatban definiált feltétel megfelelő ágának lefutását biztosítják.
7. ábra. NetBeans Kompozit alkalmazás – Service Assembly
5.3. Tesztelés, Ellenőrzés
5.3.
66
Tesztelés, Ellenőrzés
A webszolgáltatások tesztelésére több lehetőségünk nyílik. Használhatjuk a közel produkciós állapotban lévő saját fejlesztésű kliensünket néhány tesztelésre, vagy például közvetlen JUnit integrációval unit tesztek tömkelegét hajthatjuk végre, automatikusan. Használhatjuk a NetBeans-be beépített tesztelési lehetőségeket (SOAP üzenet, JUnit,..). Egyéb esetekben hasznosak a következőkben bemutatott lightweight eszközök.
5.3.1.
soapUI
A soapUI (http://www.soapui.org) az egyik legelterjedtebb eszköz. Sikeressége - többek között - annak köszönhető, hogy ingyenes, Open Source és akár Java Web Start-on keresztül is elérhető. Automatikusan, természetesen WSDL alapján generál megfelelő üzeneteket, teszteseteket, amiket elküldhetünk a webszolgáltatásnak. Támogatja a WS-Security-t, sikeresen illeszthetjük be az üzenetekbe a Username Token, illetve a Timestamp fejléceket. Sajnos az eszköz még nem mindenben tökéletes, például az üzenetet hibásan írja alá (Signature), illetve feltehetően az aláírás után módosítja az üzenet tartamát (Pretty Print?). A WSS4J esetében ez a következő üzenettel mutatkozik meg/hibával száll el (szerverlog): 2008.04.17. 9:06:40 org.apache.xml.security.signature.Reference verify WARNING: Verification failed for URI "#id-17452412" 2008.04.17. 9:06:40 org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor handleMessage WARNING: org.apache.ws.security.WSSecurityException: The signature verification failed
Amennyiben más eszközzel, legbiztosabb esetben saját klienssel kapcsolódunk a szolgáltatáshoz, a következő információ biztosít minket a sikeres ellenőrzésről (szerverlog): 2008.04.17. 13:05:25 org.apache.xml.security.signature.Reference verify INFO: Verification successful for URI "#id-15284633"
Ha nem szúrjuk be az elvárt SOAP biztonsági fejléceket, a következő hibát kapjuk szerveroldalon (szerverlog), és kliensoldalon (SOAP Fault) is: Request does not contain required Security header.
5.3.2.
TCPmon
Természetesen, ha saját klienssel kapcsolódunk a szolgáltatáshoz, és szeretnénk látni,
5.3. Tesztelés, Ellenőrzés
67
hogy pontosan milyen üzeneteket kap/küld a webszolgáltatásunk, az egyik legegyszerűbb, céleszköz a TCPmon11. A TCPmon a kommunikációs felek közé ékelődik, mintegy lightweight proxy. A kliensünkhöz egy saját definiálású portot kell megadni (Local Port), szerver oldalon nincs változtatás (Server Port, Server Name). Az üzenetek a TCPmon-on keresztül lesznek elküldve, a válasz is ezen keresztül érkezik vissza a klienshez.
11 TCPmon: https://tcpmon.dev.java.net/
Irodalomjegyzék [1] Sun Microsystems, Inc., THE SOA PLATFORM GUIDE:EVALUATE, EXTEND, EMBRACE, 2006, http://www.sun.com/software/whitepapers/soa/soa_platform_guide.pdf [2] Eric Newcomer, Michelle Davis, Is your Agency ready for open source SOA?, http://www.iona.com/info/aboutus/events/webcasts/DLT%20webcast%203-1-07.ppt, 2008.05.01. [3] Kovács András, A SOA a jövő üzleti és architekturális modellje, http://www.computerworld.hu/soa-jovo-uzleti-architekturalis-modellje.html, 2008.05.01. [4] Török Tamás, Integráció szabványos alapokon - Sun SOA megoldás, http://hu.sun.com/sunnews/events/2006/banki_szeminarium/pdf/2006_03_23_Integracio _SOA.pdf, 2008.05.01. [5] Szolgáltatás Orientált Architektúra Jelen és jövő, Szolgáltatás Orientált Architektúra Jelen és jövő, http://www.ibm.com/hu/news/events/2005/akademia/dn_0928/2.pdf, 2008.05.01. [6] Jeff Davies, Ashish Krishna, David Schorow, The Definitive Guide to SOA: BEA AquaLogic Service Bus, Apress, 2007 [7] Erik Christensen, Francisco Curbera, Greg Meredith, Sanjiva Weerawarana, Web Services Description Language (WSDL) 1.1, 2001, http://www.w3.org/TR/wsdl [8] Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Frystyk Nielsen, Satish Thatte, Dave Winer, Simple Object Access Protocol (SOAP) 1.1, 2000, http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ [9] TutorialsPoint.COM, SOAP Tutorial, http://www.tutorialspoint.com/soap/, 2008.04.01. [10] Sang Shin, XOP (XML Binary Optimized Packaging) & MTOM (Message Transfer Optimized Messaging), http://www.javapassion.com/webservices/mtom.pdf, 2008.04.01. [11] Wikipedia, XML-binary Optimized Packaging, http://en.wikipedia.org/wiki/XMLbinary_Optimized_Packaging, [12] Sang Shin, UDDI (Universal Description,Discovery and Integration), http://www.javapassion.com/webservices/UDDI.pdf, 2008.04.01. [13] Gerencsér András, Digitális aláírás szolgáltatások architektúrája, https://nws.niif.hu/ncd2001/docs/eloadas/4/index.rtf, 2008.04.01. [14] Gara Péter, Nyilvános kulcsú hitelesítés napjainkban, http://www.ik.sote.hu/networkshop2007/phu/108.pdf, 2008.04.01. [15] Gopalakrishnan U, Rajesh Ravi, Web services security, Part I, http://www.ibm.com/ developerworks/library/ws-sec1.html, 2008.04.01. [16] IBM Corporation, Securing Web services applications at the transport level, 68
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp? topic=/com.ibm.websphere.express.doc/info/exp/ae/twbs_secwsaatl.html, 2008.04.01. [17] Jason Brittain, Ian F. Darwin, Tomcat: The Definitive Guide, O'Reilly, 2003 [18] Wikipedia, Business Process Execution Language, http://en.wikipedia.org/wiki/BPEL, 2008.04.01. [19] Matjaz B. Juric, BPEL: Service composition for SOA, http://www.javaworld.com/javaworld/jw-07-2006/jw-0710-bpel.html, 2008.04.01. [20] Sang Shin, BPEL: Building Standards-Based Business Processes with Web Services, http://www.javapassion.com/webservices/BPELOverview.pdf, 2008.04.01. [21] Wikipedia, Java Business Integration, http://en.wikipedia.org/wiki/Java_Business_Integration, 2008.04.01. [22] Sun Microsystems, Inc., Java™ Business Integration (JBI) 1.0, 2005, http://jcp.org/ en/jsr/detail?id=208 [23] Sang Shin, SOA using Open ESB,BPEL, and NetBeans, http://www.javapassion.com/webservices/soabpelopenesb.pdf, 2008.04.01. [24] Sun Microsystems, Inc., Installing Open ESB V2 Preview 3 Components Using the Open ESB Add-On Installation JAR File, http://download.java.net/general/openesb/docs/jbi-installation/install-components-jar.html, 2008.05.01. [25] Paul Krill, Sun blends SeeBeyond, in-house technologies for SOA, http://www.infoworld.com/article/06/02/09/75199_HNsunsoasuites_1.html, 2008.05.01. [26] Paul Krill, Sun completes SeeBeyond buy , http://www.infoworld.com/article/05/08/25/HNsunseebeyond_1.html, 2008.05.01. [27] Java CAPS User, Java CAPS User, http://blogs.sun.com/jcapsuser/, 2008.05.01. [28] Fred Aabedi, OpenESB and CAPS, http://blogs.sun.com/fredaabedi/entry/openesb_and_caps, 2008.05.01. [29] Sun Microsystems, Inc., Sun Java™ Composite Application Platform Suite, http:// www.sun.com/software/javaenterprisesystem/suites/caps_ds.pdf, 2008.05.01. [30] Sang Shin, StAX (Streaming API forXML), http://www.javapassion.com/webservices/StAX.pdf, 2008.04.01. [31] Eric Jendrock, Jennifer Ball, Debbie Carson, Ian Evans, Scott Fordin, Kim Haase, The Java™ EE 5 Tutorial, 2007, http://java.sun.com/javaee/5/docs/tutorial/doc/ [32] Sang Shin, JAX-WS Basics, http://www.javapassion.com/webservices/jaxwsbasics.pdf, 2008.04.01. [33] Sang Shin, JAX-WS: Advanced Feature, http://www.javapassion.com/webservices/ jaxwsadvanced.pdf, 2008.04.01. [34] The Apache Software Foundation, Apache WSS4J - WSS4J Documentation, http:// ws.apache.org/wss4j/, 2008.04.01. [35] ObjectWeb Consortium, JOnAS Wiki - HowToWSS4J, https://wiki.objectweb.org/jonas/Wiki.jsp?page=HowToWSS4J, 2008.04.01. [36] The Apache Software Foundation, FrontPage/WsFx/wss4jFAQ, 69
http://wiki.apache.org/ws/FrontPage/WsFx/wss4jFAQ, 2008.05.01. [37] The Apache Software Foundation, Apache CXF 2.0 User's Guide - WS-Security, http://cwiki.apache.org/CXF20DOC/ws-security.html, 2008.04.01. [38] Sun Microsystems, Inc. , keytool-Key and Certificate Management Tool, 2002, http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html [39] Sun Microsystems, Inc., The Java™ Web Services Tutorial, 2007, http://java.sun.com/webservices/docs/2.0/tutorial/doc/ [40] Sang Shin, JAXB (Java™ Architecture for XML Binding), http://www.javapassion.com/webservices/jaxb.pdf, 2008.04.01. [41] Frank Jennings, David Salter, NetBeans Enterprise Pack: Building SOA Applications, Packt Publishing, 2008 [42] Sang Shin, Tools for Simplifying SOA, http://www.javapassion.com/webservices/netbeanssoa.pdf, 2008.05.01.
70
Ábrajegyzék 1. ábra. SOA előtt és SOA után Forrás: http://www.sun.com/products/soa/benefits.jsp......................................................9 2. ábra. OpenESB architektúra Forrás: https://open-esb.dev.java.net/AboutOpenEsb.html.............................................32 3. ábra. Java CAPS architektúra Forrás: [29]......................................................................................................................37 4. ábra. JAXB Architektúra Forrás: [31]......................................................................................................................48 5. ábra. JAXB Binding folyamata Forrás: [31]......................................................................................................................49 6. ábra. NetBeans BPEL Designer...................................................................................64 7. ábra. NetBeans Kompozit alkalmazás – Service Assembly........................................65
71
Táblázatjegyzék 1. táblázat. @WebService annotáció attribútumai...........................................................42 2. táblázat. @WebMethod annotáció attribútumai..........................................................42 3. táblázat. @WebParam annotáció attribútumai.............................................................43 4. táblázat. @WebResult annotáció attribútumai.............................................................43 5. táblázat. @SOAPBinding annotáció attribútumai.......................................................44 6. táblázat. JAXB mapping adattípusok XML Schema-ból Java-ba...............................50 7. táblázat. JAXB mapping adattípusok Java-ból XML Schema-ba...............................51
72