Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

SOAP és webservice.

Hasonló előadás


Az előadások a következő témára: "SOAP és webservice."— Előadás másolata:

1 SOAP és webservice

2 XML-API

3 XML használata Program-program kapcsolat egyik módja
adóprogram előállítja az átvinni kívánt objektumot objektum bean-ként objektumból XML XML átvitele vevő kapott egy XML-t XML-ből átalakítás objektummá

4 Átvitel megoldása Adó rendszer (mint web-kliens) XML-ben a kérés
válaszXML -> bean bean->XML XML-ben a kérés (HTTP request-ként) XML-ben a válasz (HTTP response-ként) Vevő rendszer (mint web-szerver) válaszbean -> XML XML->bean

5 Működés Kérés egy Javabean-ben képződik Szimulált böngésző
bean-ből XML-t kell generálni szimulálni kell programmal a web-böngészőt HTTP-request készítés Szimulált böngésző visszaveszi a HTTP-response-ot az adattartalom egy XML-szerkezet XML-ből Javabean struktúrát kell készíteni

6 XML és Javabean kapcsolata
public class TestBean implements java.io.Serializable { protected int foo; protected String bar; protected java.util.Date baz; protected Vector thingies; protected TestSubbean sub; } <MarkTest> <foo>5</foo> <bar>This is the bar value</bar> <baz> <year>2003</year> <month>03</month> </baz> <thingies> <item index=”0”>Moe</thing> <item index=”1”>LX</thing> </thingies> <sub> <name>Mark</name> <age>56</age> </sub> </MarkTest>

7 XML és Javabean kapcsolata
public class TestBean implements java.io.Serializable { protected int foo; protected String bar; protected java.util.Date baz; protected Vector thingies; protected TestSubbean sub; } <MarkTest> <foo>5</foo> <bar>This is the bar value</bar> <baz> <year>2003</year> <month>03</month> </baz> <thingies> <item index=”0”>Moe</thing> <item index=”1”>LX</thing> </thingies> <sub> <name>Mark</name> <age>56</age> </sub> </MarkTest>

8 Bean-ből XML készítése
try { TestBean b = new TestBean(); b.setFoo(5); b.setBar("This is the bar value"); b.setThingies(new String[] { "Moe", "LX"} ); TestSubbean sub = new TestSubbean(); sub.setName("Mark"); sub.setAge(56); b.setSub(sub); FileOutputStream fileOut = new FileOutputStream(”output.xml"); JOXBeanOutputStream joxOut = new JOXBeanOutputStream(fileOut); joxOut.writeObject("MarkTest", b); } bean előállítása ez jön létre! első szint neve kell! bean, mint bemenet

9 XML-ből bean készítése
bemeneti xml try { FileInputStream in = new FileInputStream(”input.xml"); JOXBeanInputStream joxIn = new JOXBeanInputStream(in); TestBean testBean = (TestBean) joxIn.readObject( TestBean.class); } int foo = testbean.getFoo(); String bar = testbean.getBar(); ... „minta” osztályként megadva felhasználás

10 Átvitel HTTP-vel Külön Java-osztály a kezeléshez Request-készítés
Response-várás URL dataURL = new URL(protocol, host, port, uri); URLConnection connection = dataURL.openConnection(); ByteArrayOutputStream byteStream = ...; byteStream.writeTo(connection.getOutputStream()); BufferedReader in = new BufferedReader( new InputStreamReader (connection.getInputStream()));

11 SOAP

12 Előzmények: WDDX Web Distribution Data Exchange </wddxPacket>
<wddxPacket version=“1.0”> <header /> <data> <recordset rowCount=”1” fieldNames=“url,headLine,source”> <field name=“url”> <string> </field> <field name=“headLine”> <string>Firefighters in Wyoming</string> <field name=“source”> <string>CNN</string> </recordset> </data> </wddxPacket>

13 Előzmények: XML-RPC <methodCall> <methodName>NumberToText</methodname> <params> <param> <value><i4>28</i4></value> </param> </params> </methodCall> <methodResponse> <params> <value><string>huszonnyolc</string></value> </methodResponse>

14 SOAP Simple Object Application Protocol
MicroSoft találja ki, W3C is elfogadja 2000-től távoli programok együttműködésére „alrendszer”, azaz alsó szintű építőelem intranetben, Interneten működik: lehet SMTP, FTP, vagy közvetlen IP-alapú de általában HTTP-vel használják XML 2.0-t használ (névtér kell!) RPC jelleggel működik

15 Remote Procedure Call Összevetés a lokális eljárás hívással
hívó és hívott eljárás más “végrehajtási kontextusban” Eljárás jellemzői utasítás szekvencia van egy belépés és egy visszatérési pontja hívó addig nem lép tovább, amíg nincs visszatérés

16 RPC specialitásai Kliens/szerver - összekapcsolódás (binding)
hívó: kliens, hívott: szerver binding-ot a kliens kezdeményezi Paraméter átadás nincs cím szerinti hívás! Újabb végrehajtási hibák távoli gép hibái függetlenek a lokálistól Biztonsági problémák - 2 értelemben is hálózati kommunikáció megbízható legyen hálózati kommunikáció veszélyhelyzetei

17 Réteges szerkezet alkalmazás alkalmazás SOAP SOAP HTTP HTTP komm.verem

18 SOAP átvitel Boríték rendszerben Adás-vétel hasonló szerkezetben
3 névtér kell SOAP, XML-séma, XML-típusok törzs (body) mindenképpen kell itt a hívás ill. a válasz fejléc (header) nem szükséges fejlécben különleges lehetőségek

19 SOAP-kérés boríték POST /xxx/InventoryChck.jws HTTP/1.0 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 426 SOAPAction: “” <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“ xmlns:xsd=“ xmlns:SOAP-ENV=“ xmlns:xsi=“ > <SOAP-ENV:Body> <doCheck> <arg0 xsi:type=“xsd:string”>947-TI</arg0> <arg1 xsi:type=“xsd:int”>1</arg1> </doCheck> </SOAP-ENV:Body> </SOAP-ENV:Envelope> HTTP header HTTP body

20 SOAP-kérés boríték POST /xxx/InventoryChck.jws HTTP/1.0 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 426 SOAPAction: “” <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“ xmlns:xsd=“ xmlns:SOAP-ENV=“ xmlns:xsi=“ > <SOAP-ENV:Body> <doCheck> <arg0 xsi:type=“xsd:string”>947-TI</arg0> <arg1 xsi:type=“xsd:int”>1</arg1> </doCheck> </SOAP-ENV:Body> </SOAP-ENV:Envelope> HTTP header HTTP body

21 SOAP-válasz boríték HTTP/ OK Content-Type: text//xml; charset=utf-8 Content-Length: 426 <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“ xmlns:xsd=“ xmlns:SOAP-ENV=“ xmlns:xsi=“ > <SOAP-ENV:Body> <doCheckResponse> <doCheckResult xsi:type=“xsd:boolean”>true</doCheckResult> </doCheckResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

22 Fejlécek és szerepük mindenképpen végrehajtandó!
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“ xmlns:xsd=“ XMLSchema” xmlns:SOAP-ENV=“ xmlns:xsi=“ > <SOAP-ENV:Header> <t:Transaction xmlns:t=”.../...” SOAP-ENV:mustUnderStand=“1”> 123456 </t:Transaction> <p:Priority xmlns:p=”.../...” ...> ... </p:Priority> </SOAP-ENV:Header> <SOAP-ENV:Body> </SOAP-ENV:Body> </SOAP-ENV:Envelope> mindenképpen végrehajtandó!

23 Autentikáció <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“ xmlns:xsd=“ XMLSchema” xmlns:SOAP-ENV=“ xmlns:xsi=“ > <SOAP-ENV:Header> <ai:AuthenticationInfo xmlns:ai=”.../...” SOAP-ENV:mustUnderStand=“1” SOAP-ENV:actor=“urn:X-Skala:PartnerGateway”> <username>PartnerA</username> <password>xxabsoap</password> </ai:AuthenticationInfo> ... <SOAP-ENV:Header> </SOAP-ENV:Envelope>

24 Actor szerepe: lánc SOAP-üzenet módosítható! pl. naplózás
webservice megvalósító WS ügynök k é r é s igénylő v á l a s z

25 Hibajelzések HTTP/ OK Content-Type: text/xml; charset=utf-8 Content-Length: 426 <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“ xmlns:xsd=“ XMLSchema” xmlns:SOAP-ENV=“ xmlns:xsi=“ > <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>AuthenticationFalure</faultcode> <faultstring>Failed to authenticate client</faultstring> <faultactor> urn:X-Skala:PartnerGateway</faultactor> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

26 Webservice (webszolgáltatás)

27 Szolgáltatás nyilvántartó
Általános szerkezet Szolgáltatás modell kliens keresés használat Szolgáltatás nyilvántartó Szolgáltató közzététel

28 Milyen szolgáltatást? Fő jellemzők Alsó átvitel mint egy metódus
paraméterezés 2 módon hagyományos paraméterek (int, Hashtable, Vector, stb.) XML be/ki általában állapotmentes megoldás Alsó átvitel SOAP-pal

29 Webservice példák Autentikáció Irányítószám-helységnév Díjszámítás
int check (String username, String password) int changePassword (String username, String oldpass, String newpass, String newpass2) Irányítószám-helységnév Vector findHelysegByIrszam (String irszam) Vector findIrszamByHelyseg (String helyseg) Vector getAllHelyseg () Díjszámítás HashMap getFee (int male, Date birthdate , int sum, int year)

30 Díjszámítás-webservice kimenete
HashMap getFee (int male, Date birthdate , int sum, int year) e_date e_sum o_age o_age o_annual o_monthly o_monthlyCheck

31 Webservice jelentősége
Intranetben szolgáltatások az intranet tetszőleges helyén igénybevehetők tetszőleges nyelven központi karbantartás Ez B2B kommunikáció extranet kapcsolatokon a lényeges info megy át

32 Webservice, mint B2B kapcsolat
intranet tűzfal Internet “webservice” szerver ügyfél gépe vagy intranetje

33 Műveletek típusa Kérés-válasz (pl. díjszámítás)
legáltalánosabb Csak válasz (pl. időpont lekérdezés) nincs bemenő paraméter Jelzés (pl. időtúllépés a keresésben) a szolgálató kezdeményezi milyen címre jöjjön: előtte címbeadás Jelzés-válasz (pl. időtúllépés hatására leállító akció) jelzésre a kliens visszaszól hasonló problémák, mint a jelzésnél

34 Szolgáltatás leírása Külön nyelv WSDL: WebService Definition Language
XML forma sok komponensből Elemei mit csinál adat és protokollformátumok protokollra jellemző címek

35 WSDL elemei 0. definition: a leírás neve, így kereshető
1. types: milyen típusok szerepelnek egyáltalán 2. message: be/ki egységek 3. portType: műveletek csoportja, átvitel-független operation: konkrét név, általában több is 4. binding: hogyan kapcsolódik a SOAP-hoz 5. service: kapuk csoportjának neve port: hol érhető el a szolgáltatás

36 WSDL fejléce <?xml version=“1.0” ?>
<definitions name=“PriceCheck” targetNamespace= “ xmlns:pc= “ xmlns:xsd=“ xmlns:soap= xmlns= “ > alapértelmezett névtér

37 WSDL elemzése 1 2 3 4 5 ... <types>
<xsd:element name=“price” type=“xsd:double” /> ... </types> <message name=“PriceCheckRequest”> <part name=“sku” type=“xsd:string” /> </message> <portType name=“PriceCheckPortType”> <operation name=“checkPrice” parameterOrder=“...”> <documentation>Szöveges dokumentáció</documentation> <input message=“pc:PriceCheckRequest” /> <binding name=“PriceCheckSOAPBinding” type=“pc:PriceCheckPortType”> < verb=”GET" /> <soap:binding ... <operation name =“checkPrice” ... <service name=“PriceCheckService”> <port name=“PriceCheck” binding=“pc:PriceCheckSOAPBinding”> <soap:address location=“ 1 2 3 4 5

38 Valós példa Irányítószám-helységnév findIrszamByHelyseg
szolgáltatások (néhány) Vector findHelysegByIrszam (String irszam) Vector findIrszamByHelyseg (String helyseg) Vector getAllHelyseg () findIrszamByHelyseg ha értelmes a helységnév ha nem: hibajelzés (NO_SUCH_RECORD, …) Vácduka 2167 Budapest 1011,

39 Definició

40 Valós példa Kimenet kódolás Kimeneti példák definició elvileg
Vector findIrszamByHelyseg (String helyseg) definició a valóságban HashMap findIrszamByHelyseg (String helyseg) Kimeneti példák o_result OK o_ o_ o_ o_result NO_SUCH_RECORD

41 Típusok

42 Üzenetek

43 Kapu és művelet

44 Összekötés az alsóbb szinttel

45 Szolgáltatás

46 WSDL bővítése Egyéb kapcsolási módok GET/POST használata SOAP (eddig)
közvetlen web használata (GET v. POST) GET/POST használata elönyös a webes akcióknál

47 Webservice készítés Ingyenes rendszerek Apache-Axis
TheMindElectric/GLUE

48 Webservice használata
Használati formák Java programból természetes Windows-XP-ben már az Excel-ből is PERL interface van PHP interface van Központi karbantartás interface kidolgozása (pl. GUI formában)


Letölteni ppt "SOAP és webservice."

Hasonló előadás


Google Hirdetések