Steve Graham, Sim Simeonov, Toufic Boubez, Doug Davis, Glen Daniels, Yuichi Nakamura, Ryo Neyama
Java alapú webszolgáltatások XML, SOAP, WSDL, UDDI
Java
alapú webszolgáltatások XML, SOAP, WSDL, UDDI
A kiadvány a következõ angol eredeti alapján készült: Steve Graham, Sim Simeonov, Toufic Boubez, Doug Davis, Glen Daniels, Yuichi Nakamura, Ryo Neyama: Building Web Services with Java: Making sense of XML, SOAP, WSDL and UDDI Published by Pearson Education, Inc, publishing as Sams, Copyright © 2002. All rights reserved! Translation Copyright © 2002 by Kiskapu Ltd. All rights reserved!
No part of this book, including interior desing, cover design, and icons, may be reproduced or trransmitted in any form, by any means (electronic, photocopying, recording, or otherwise) without the prior written permission of the publisher. Trademarked names appear throughout this book. Rather than list the names and entities that own the trademarks or insert a trademark symbol with each mention of the trademarked name, the publisher states that it is using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing upon that trademark. A szerzõk és a kiadó a lehetõ legnagyobb körültekintéssel járt el e kiadvány elkészítésekor. Sem a szerzõ, sem a kiadó nem vállal semminemû felelõsséget vagy garanciát a könyv tartalmával, teljességével kapcsolatban. Sem a szerzõ, sem a kiadó nem vonható felelõsségre bármilyen baleset vagy káresemény miatt, mely közvetve vagy közvetlenül kapcsolatba hozható e kiadvánnyal. Magyar változat © 2002 Kiskapu Kft. Minden jog fenntartva! Sorozatszerkesztõ: Szy György Lektor: Rézmûves László
Fordítás: Borai János, Dóczi Krisztián Mûszaki szerkesztõ: Csutak Hoffmann Levente
Felelõs kiadó a Kiskapu Kft. ügyvezetõ igazgatója Fordítás © 2002 Kiskapu Kft. Minden jog fenntartva! 1081 Budapest Népszínház u. 29. Tel: (+36-1) 303-9119, 477-0443 Fax: (+36-1) 303-1619 http://www.kiskapu.hu/ e-mail:
[email protected] ISBN: 963 9301 04 3
Tartalomjegyzék
1. fejezet A webszolgáltatások áttekintése Mi az a webszolgáltatás? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Üzleti szempontok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Technikai szempontok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 A webszolgáltatások típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Vállalaton belüli alkalmazásegyesítés . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Üzletek közötti kapcsolat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Üzletvásárló, üzletüzlet kapcsolatok és a webszolgáltatások . . . . 9 Az elektronikus kereskedelem irányzatai . . . . . . . . . . . . . . . . . . . . . . . . . 11 Miért van szükségünk webszolgáltatásokra? . . . . . . . . . . . . . . . . . . . . . . . 14 A probléma mérete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Az elérhetõ megoldások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Gyors fejlõdés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Szolgáltatásközpontú rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Webszolgáltatás-együttmûködési vermek . . . . . . . . . . . . . . . . . . . . . . . . . 24 A vezeték verem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 A leírás verem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 A feltáró verem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Az együttmûködési vermek összerakása . . . . . . . . . . . . . . . . . . . . . . . 30 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2. fejezet XML alapok Az XML eredete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Dokumentumközpontú és adatközpontú XML . . . . . . . . . . . . . . . . . . . . . 39 Dokumentumközpontú XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Adatközpontú XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 A dokumentum élettartama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 XML példányok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Dokumentumbevezetõ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Elemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Tulajdonságok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Karakteres adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Kódolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Vezérlõkarakterek és szóközök . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Egyedek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Egy egyszerû megrendelõlap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 XML névterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 A névterek mûködése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 A névterek formája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Névtér elõtaggal rendelkezõ tulajdonságok . . . . . . . . . . . . . . . . . . . . . 60 Dokumentumtípus-meghatározások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
viii
Java alapú webszolgáltatások
Jólformáltság és érvényesség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 A dokumentum szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 A DTD elegendõ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 XML sémák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Az XML séma alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 A sémák és a dokumentumok összekapcsolása . . . . . . . . . . . . . . . . . . 68 Egyszerû típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Összetett típusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 A megrendelõlap sémája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Egyszerû séma-újrahasznosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Elemhivatkozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Tartalommodell-csoportok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Tulajdonságcsoportok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Séma-tartalmazás és -importálás . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Összetett séma-újrahasznosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Tervezési elvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Bõvítések és korlátozások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Az xsi:type jelentõsége . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Tovább is van
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 XML-feldolgozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Alapvetõ mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Adatközpontú XML-feldolgozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 SAX alapú számlaellenõrzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 DOM alapú számlaellenõrzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 A kód tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Források . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3. fejezet Az egyszerû objektumelérési protokoll (SOAP) Az XML protokollok fejlõdése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Elsõ generációs XML protokollok . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 WDDX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 XML-RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Elsõ generációs problémák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 A SOAP létrejötte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Mire jó a SOAP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Mi valójában a SOAP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Üzletelés a SkatesTownnal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Kapcsolattartás a leltárrendszerrel . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Leltárellenõrzõ webszolgáltatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 A webszolgáltatás motorjának kiválasztása . . . . . . . . . . . . . . . . . . . . 138
Tartalomjegyzék
A szolgáltató nézete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 A szolgáltatás-igénylõ nézete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 A szolgáltatás tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 SOAP a legalacsonyabb szinten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 TCPMon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 A SOAP kérés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 A SOAP válasz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 A SOAP boríték keretrendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 SOAP boríték . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 SOAP-változat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 SOAP fejlécek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 SOAP törzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 A SOAP bõvíthetõségének elõnyei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 A szolgáltatás-igénylõ nézete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 A szolgáltató nézete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 A szolgáltatás tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 SOAP a legalacsonyabb szinten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 SOAP közvetítõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 A közvetítõk létjogosultsága . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Közvetítõk a SOAP-ban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Összeáll a kép . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Hibakezelés a SOAP-ban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 SOAP üzenet-feldolgozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 SOAP adatkódolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Különféle adatkódolások megadása . . . . . . . . . . . . . . . . . . . . . . . . . 170 SOAP adatkódolási szabályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Alapszabályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Értéktípusok azonosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 SOAP tömbök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Adathivatkozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Ami kimaradt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Az adatkódolás megválasztása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 XML adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Bináris adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Elvont adatmodellek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Adatok csatolása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Elosztott rendszerek építése webszolgáltatásokkal . . . . . . . . . . . . . . . . . 183 Üzenetküldés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Résztvevõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Együttmûködési sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Összehangolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Közvetlen és közvetett üzenetküldés . . . . . . . . . . . . . . . . . . . . . . 187 A szolgáltatás minõsége . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
ix
x
Java alapú webszolgáltatások
Üzenetformátum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Üzenetküldés vagy távoli eljáráshívás . . . . . . . . . . . . . . . . . . . . . . . . 188 SOAP alapú távoli eljáráshívás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 SOAP alapú üzenetküldés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Megrendelés-feldolgozó webszolgáltatás . . . . . . . . . . . . . . . . . . . . . . . . 194 Megrendelõlap- és számlasémák . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 XML-Java adatmegfeleltetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 A szolgáltatás-igénylõ nézete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 A szolgáltató nézete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A szolgáltatás tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 SOAP a legalacsonyabb szinten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 SOAP protokoll-hozzárendelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Általános megfontolások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 HTTP/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Melléklettel rendelkezõ SOAP üzenetek . . . . . . . . . . . . . . . . . . . . . . 210 SOAP üzenetek SMTP felett . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Más protokollok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Hogyan tovább? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Források . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
4. fejezet Webszolgáltatások készítése Az Axis-rõl röviden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Az Axis felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Axis elemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Axis motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Kezelõk és láncok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Átvitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 A szolgáltatáslánc kiválasztása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 XML-értelmezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Az Axis telepítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Az Axis beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Beállítási módszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Biztonság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Egyszerû webszolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Ügyfél oldali programozás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Webszolgáltatások üzembe helyezése haladó szinten . . . . . . . . . . . . . . . 244 Dokumentumközpontú szolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Adatkódolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Kezelõk készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Különleges sarokpont-kezelõk (szolgáltatók) . . . . . . . . . . . . . . . . . . . . . 252 Hibakezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Tartalomjegyzék
Üzenetsablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Közvetítõk létrehozása és üzembe helyezése . . . . . . . . . . . . . . . . . . . . . 256 SOAP V1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Megfigyelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
5. fejezet A SOAP használata e-üzleti alkalmazásokban A webszolgáltatások biztonsága . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 A tesztkörnyezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Az SSL és az egyszerû HTTP hitelesítés . . . . . . . . . . . . . . . . . . . . . . . 266 Egyszerû HTTP hitelesítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Egyszerû hitelesítés az Axis-ben . . . . . . . . . . . . . . . . . . . . . . . . . . 267 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Az SSL használata az Axis-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Biztonságos csatolók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Az SSL protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Digitális aláírások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 SOAP digitális aláírás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 A SOAP digitális aláírásokról bõvebben . . . . . . . . . . . . . . . . . . . . 284 XML titkosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 SOAP titkosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 A Java titkosítási keretrendszer és kiegészítés . . . . . . . . . . . . . . . . 289 A SOAP és az adattovábbítási réteg biztonsági szolgáltatásai . . . . 290 Naplózó szolgáltatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Jogosultság-kezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 URL alapú jogosultság-kezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 A Java osztályok hozzáférés-vezérlése . . . . . . . . . . . . . . . . . . . . . 295 Biztonsági igazolások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 A nyilvános kulcsú rendszer (PKI) és a kulcskezelés . . . . . . . . . . . . . 299 A nyilvános kulcsú rendszer (PKI) . . . . . . . . . . . . . . . . . . . . . . . . 300 Az XML kulcskezelési szabványa (XKMS) . . . . . . . . . . . . . . . . . . . 302 Biztonság de hogyan? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Vállalati alkalmazások egyesítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 A J2EE-re épülõ SOAP kiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Tranzakciók feldolgozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Az ACID és a kétlépéses végrehajtás . . . . . . . . . . . . . . . . . . . . . . . . . 316 EJB futtatása az Axis-bõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Az EJB használata a SOAP motorokkal . . . . . . . . . . . . . . . . . . . . . 319 Internetes tranzakciók . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Megbízható üzenetküldés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Üzenetsor-kezelés a JMS-sel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Üzenetvezérelt babszemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
xi
xii
Java alapú webszolgáltatások
A JMS, mint SOAP átvitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Megbízható üzenettovábbítás az Interneten . . . . . . . . . . . . . . . . . 331 A J2EE biztonsági modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Engedélyeztetés a J2EE-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Kapcsolat a JAAS-sal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 A szolgáltatás minõsége . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 A vállalati SOAP kiszolgáló . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Magas elérhetõség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Rendszerkezelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Vállalati biztonság . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Források . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
6. fejezet A webszolgáltatások leírása Miért van szükség szolgáltatás-leírásokra? . . . . . . . . . . . . . . . . . . . . . . . . 349 A szolgáltatás-leírások szerepe a szolgáltatásközpontú rendszerben . . . . 350 A jól meghatározott szolgáltatás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Mûveleti leírás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Nem mûveleti leírás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Egyesítési, összehangolási leírás . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Összefoglalás: amit a veremrõl tudni kell . . . . . . . . . . . . . . . . . . . . . 353 A felületleíró nyelvek története . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 A webszolgáltatások leírónyelve (WSDL) . . . . . . . . . . . . . . . . . . . . . . . . 359 A WSDL információs modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 A WSDL nyelv elemei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 WSDL példák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 PortType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Kérelemválasz típusú mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . 372 Egyirányú mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Jelzõmûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Jelzésválasz típusú mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Amit az operation elemrõl még tudni kell . . . . . . . . . . . . . . . . . . 375 Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 A meghívás módja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 SOAPAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 A bemeneti üzenet formája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 A kimeneti üzenetek formája . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 A SOAP fejléc formája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 A SOAP Fault és HeaderFault formátuma . . . . . . . . . . . . . . . . . . . 387
Tartalomjegyzék
Példa az SMTPBinding használatára . . . . . . . . . . . . . . . . . . . . . . . 388 Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 A documentation elem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Az import elem hagyományos használata . . . . . . . . . . . . . . . . . . . . . 393 A WSDL bõvítési rendszere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 A HTTP GET/POST webszolgáltatások WSDL leírásai . . . . . . . . . 397 A MIME lehetõségeit kihasználó webszolgáltatások WSDL leírása 399 A WSDL és a Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Kód származtatása a WSDL-bõl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 A WSDL2Java által létrehozott fájlok . . . . . . . . . . . . . . . . . . . . . . . . . 401 Osztályok létrehozása átalakítás és visszaalakítás céljából . . . . . . 403 Az ügyfélcsonkgyár csonk és felület létrehozása . . . . . . . . . . . . 405 A kiszolgálóváz és -felület létrehozása . . . . . . . . . . . . . . . . . . . . . 412 Bemeneti/kimeneti és többrészes kimeneti paraméterek . . . . . . . 414 Az üzembe helyezési XML létrehozása . . . . . . . . . . . . . . . . . . . . . . . 420 Összefoglalás: a mûködõ PriceCheck szolgáltatás . . . . . . . . . . . . 422 Összegzés: WSDL és Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 WSDL készítése kódból . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 A szolgáltatás-leírások jövõje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Web Services Endpoint Language (WSEL) . . . . . . . . . . . . . . . . . . . . . 428 WSFL (Web Services Flow Language) . . . . . . . . . . . . . . . . . . . . . . . . 429 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
7. fejezet Webszolgáltatások feltárása A szolgáltatások feltárásának szerepe . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 A nyilvántartók szerepe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 A szolgáltatás-feltárás tervezés közben és futásidõben . . . . . . . . . . . 436 A szolgáltatás-feltárás többféle módszere . . . . . . . . . . . . . . . . . . . . . . 437 Változó körülmények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Az UDDI használati modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Az UDDI nyilvántartók követelményeinek áttekintése . . . . . . . . . 442 Az UDDI adatszerkezetek áttekintése . . . . . . . . . . . . . . . . . . . . . . 443 Az UDDI API áttekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Az UDDI webes felületének használata . . . . . . . . . . . . . . . . . . . . . . . 447 Az UDDI tModel rendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Mi az a tModel? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Hogyan használjuk a tModelleket? . . . . . . . . . . . . . . . . . . . . . . . . 453 A tModel szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 A csoportosítás és osztályozás részletei . . . . . . . . . . . . . . . . . . . . 456
xiii
xiv
Java alapú webszolgáltatások
A save_tModel szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Azonosítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 A tModel adatok közzététele az UDDI-ben . . . . . . . . . . . . . . . . . . 461 Az UDDI gyökér tModel-jei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 Üzleti adatok közzététele UDDI nyilvántartóban . . . . . . . . . . . . . . . . 469 A businessEntity szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 A save_business mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 Összegzés: egy save_business példa . . . . . . . . . . . . . . . . . . . . . . 473 A szolgáltatás adatainak bejegyzése az UDDI nyilvántartóba . . . . . . . 477 A businessService szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 A bindingTemplate szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 A tModelInstanceDetail szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . 482 A save_service mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Összegzés: egy save_service példa . . . . . . . . . . . . . . . . . . . . . . . . 484 Összekapcsolás közzététele a save_binding mûvelettel . . . . . . . . 487 Törlési mûveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 Hibakezelés az UDDI programozási felületben . . . . . . . . . . . . . . 490 Keresés az UDDI nyilvántartóban . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 A find_business mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 A find_service mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 A find_binding mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 A find_tModel mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Üzleti és szolgáltatási adatok lehívása az UDDI nyilvántartóból . . . . 501 A get_businessDetail mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 A get_serviceDetail mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 A get_bindingDetail mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 A get_tModelDetail mûvelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Összefoglalás: az UDDI 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Nem nyilvános UDDI nyilvántartók . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 Mire jók a saját UDDI nyilvántartók? . . . . . . . . . . . . . . . . . . . . . . . . . 503 A nem nyilvános UDDI-k típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 E-piaci UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Portál UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Üzletfél-katalógus UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Belsõ vállalati alkalmazás-egyesítési UDDI (EAI UDDI) . . . . . . . . 511 Teszt UDDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Mi változott az UDDI 2.0-ban? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Az UDDI 2.0 újdonságai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512 Külsõ csoportosítási rendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Összetartozó businessEntity bejegyzések modellezése . . . . . . . . . . . 516 A lekérdezési API változásai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 A find_relatedBusinesses üzenet . . . . . . . . . . . . . . . . . . . . . . . . . . 520 A többnyelvû üzlet- és szolgáltatásnevek támogatása . . . . . . . . . . 522
Tartalomjegyzék
Engedékenyebb find_business . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Új keresési jelzõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 A közzétételi API változásai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 add_publisherAssertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 delete_publisherAssertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 set_publisherAssertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 get_publisherAssertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 get_assertionStatusReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Szolgáltatások megosztása a businessEntity bejegyzések között . . 531 További változások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 A generic paraméter és az alapértelmezett XML névtér . . . . . . . . . 532 A hibakódok változásai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 A SOAPAction fejléc használatának új módja . . . . . . . . . . . . . . . . 533 Új hivatalos tModel-lek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 A tükrözési szabvány . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Operátori kézikönyv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 A WSDL használata az UDDI-vel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 WSDL alapú businessService mentése . . . . . . . . . . . . . . . . . . . . . . . . 536 Összetett WSDL és UDDI bejegyzések . . . . . . . . . . . . . . . . . . . . . . . . 540 Összegzés: a WSDL alapú UDDI és a dinamikus keresés . . . . . . . . . . 546 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
8. fejezet Együttmûködés és segédeszközök Együttmûködés: a webszolgáltatások szent grálja . . . . . . . . . . . . . . . . 561 A SOAP fejlesztõi közösség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 Interop Lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 A W3C: a szabványos SOAP felemelkedése . . . . . . . . . . . . . . . . . . . . 565 A webszolgáltatások tágabb környezete . . . . . . . . . . . . . . . . . . . . . . . . . 566 Kik építenek SOAP rendszereket? . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 A J2EE világa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 És a .NET? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 Más nyelvek és környezetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 És ez még nem minden... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 A SOAP::Lite webszolgáltatások Perlben . . . . . . . . . . . . . . . . . . . . . 569 A WSDL és a SOAP::Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 Autodispatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570 Bevezetés a .NET webszolgáltatások világába . . . . . . . . . . . . . . . . . . 571 Common Language Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Gyökérosztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
xv
xvi
Java alapú webszolgáltatások
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 A PriceCheck ügyfélprogram a .NET-ben . . . . . . . . . . . . . . . . . . . 572 A .NET webszolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 GLUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 A SkatesTown InventoryCheck szolgáltatásának GLUE ügyfélprogramja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Szolgáltatások közzététele a GLUE-val . . . . . . . . . . . . . . . . . . . . . 581 A GLUE más lehetõségei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 Források . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
9. fejezet A jövõ A számítástechnika, mint eszköz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Webszolgáltatások mindenhol: egy álom . . . . . . . . . . . . . . . . . . . . . . 588 A központosított modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 Az egyenrangú modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 További változatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 Ontológiák és a szemantikus Világháló . . . . . . . . . . . . . . . . . . . . . . . . . . 591 Az erõforrás-leíró keretrendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 Ontológiák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Az RDF és a webszolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Szoftverügynökök . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 A szoftverügynökök és a webszolgáltatások . . . . . . . . . . . . . . . . . 596 Egyenrangú számítási modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Az egyenrangú számítási modell és a webszolgáltatások . . . . . . . 598 Rácsszámítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 A rácsszámítás és a webszolgáltatások . . . . . . . . . . . . . . . . . . . . . 600 Beágyazott webszolgáltatások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 Összefoglalás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 Források . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Szójegyzék
605
Tárgymutató
631