270 likes | 415 Views
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. Apache XML-RPC. SEMINAR Programiranje u Javi. Autor: Siniša Pribil Voditelj: mr. sc. Marko Čupić. Zagreb, svibanj 2009. Sadržaj. Uvod Tehnologija RPC Jezik XML Tehnologija XML-RPC Biblioteka Apache XML-RPC Zaključak. 2.
E N D
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Apache XML-RPC SEMINAR Programiranje u Javi Autor: Siniša Pribil Voditelj: mr. sc. Marko Čupić Zagreb, svibanj 2009.
Sadržaj • Uvod • Tehnologija RPC • Jezik XML • Tehnologija XML-RPC • Biblioteka Apache XML-RPC • Zaključak 2
Razvoj tehnologije • računalni resursi ograničeni,podaci na više lokacija • podjela zadataka • razmjena informacija • različita organizacija podataka • problemi pri razmjeni potreba za jedinstvenim sustavom razmjene računalnih resursa i informacija Uvod 3
Način rada Tehnologija RPC 4
Tehnologija RPC • engl. Remote procedure call • način dijeljenja računalnih resursa • pozivanje udaljenih procedura kao da su lokalne binarni prijenos parametara stvara probleme prikomunikaciji između različitih sustava Tehnologija RPC 5
Jezik XML • engl. Extensible markup language • olakšava razmjenu podatakaizmeđu aplikacija i sustava • jednostavan za čitanje i uređivanje Jezik XML 6
Sintaksa XML-a • prolog: <?xml version="1.0" encoding="UTF-8"?> • sadržaj: <tv_uredjaj> <proizvodjac>Sony</proizvodjac> <ekran> <tip>lcd</tip> <razlucivost>1080p</razlucivost> </ekran> </tv_uredjaj> Jezik XML 7
Tehnologija XML-RPC Tehnologija XML-RPC 8
XML-RPC zahtjev <?xml version="1.0"?> <methodCall> <methodName>primjer.vratiMjesto</methodName> <params> <param> <value><int>10000</int></value> </param> </params> </methodCall> Tehnologija XML-RPC 9
XML-RPC odgovor <?xml version="1.0"?> <methodResponse> <params> <param> <value> <string>Zagreb</string> </value> </param> </params> </methodResponse> Tehnologija XML-RPC 10
Tipovi podataka Tehnologija XML-RPC 11
Polje <array> <data> <value><int>43000</int></value> <value><string>Bjelovar</string></value> <value><boolean>1</boolean></value> <value><i4>43</i4></value> </data> </array> Tehnologija XML-RPC 12
Problemi • sustav ovisi o mrežnoj infrastrukturi • problemi na mreži izravno utječu na sustav • ponekad nije izvjesno je li prodecura uopće pokrenuta • problemi kod poziva procedura koje ne vraćaju uvijek isti rezultat Tehnologija XML-RPC 13
Biblioteka Apache XML-RPC • implementacija protokola XML-RPC • napisana za programski jezik Java • Klijentski dio • Poslužiteljski dio funkcionalnost ne ovisi o operacijskom sustavu ili programskom okruženju Biblioteka Apache XML-RPC 14
Klijent • pokretanje procedure: Object[] params = new Object[]{new Integer(33), new Integer(9)}; Integer result = (Integer) client.execute(“Kalkulator.zbroji", params); sa stajališta aplikacije, procedura se izvodi lokalno Biblioteka Apache XML-RPC 15
Poslužitelj • potrebno je pokrenuti uslugukoja će čekati zahtjeve klijenta • pozivanjem unaprijed određene adrese na poslužitelju pokreće se aplikacija koja obrađuje zahtjev • aplikacija izvršava traženu procedru i vraća rezultat Biblioteka Apache XML-RPC 16
Pisanje udaljenih procedura • metode organizirane u razredima package hr.fer.zemris.java.seminar; public class Kalkulator { public int zbroji(int i1, int i2) { return (i1 + i2); } public int oduzmi(int i1, int i2) { return (i1 - i2); } } Biblioteka Apache XML-RPC 17
Karakteristike • razvoj jednostavan • poslužiteljski dio ne zahtjeva prilagodbu,dovoljno je samo pokrenuti uslugu • udaljene procedure pišu se kao jednostavne metode organizirane u razredima • datoteka s popisom razreda udaljenih procedura: Kalkulator=hr.fer.zemris.java.seminar.Kalkulator Utility=hr.fer.zemris.java.seminar.Utility Biblioteka Apache XML-RPC 18
Zaključak • sve veća potreba za razmjenom računalnih resursa • XML-RPC sve poplarnija tehnologija • poziv udaljene procedure jednak lokalnom • Internet kao sredstvo prijenosa • mogućnost prijenosa složenih struktura • neovisnost o oberacijskom sustavu ili aplikacijskom okruženju • Apache XML-RPC • biblioteka za Javu • vrlo jednostavno korištenje Zaključak 19
Sintaksa - elementi • sadržaj omeđen oznakama: <proizvodjac>Sony</proizvodjac> • opća struktura elementa: <element> Tekstualni sadržaj ili umetnuti element </element> • važan redoslijed zatvaranja oznaka: <tekst><redak>Neispravan element</tekst></redak> Jezik XML Dodatak 1
Sintaksa - atributi <biljeska datum="05.02.2009."> <za>Lanu</za> <od>Domagoja</od> <tekst>Ne zaboravi prošetati psa!</tekst> </biljeska> • načini korištenja: • samo kao upute računalu • za bolju organizaciju koda Jezik XML Dodatak 2
Struktura <struct> <member> <name>Vjerojatnost i statistika</name> <value><int>4</int></value> </member> <member> <name>Inženjerska ekonomika</name> <value><int>5</int></value> </member> </struct> Tehnologija XML-RPC Dodatak 3
Ekvivalentni Java tipovi podataka Apache XML-RPC Dodatak 4
Priprema klijenta URL url = new URL("http://neki_server"); XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(url); XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); Apache XML-RPC Dodatak 5
Interval čekanja • zbog problema na mreži moguće je da se odgovor uopće ne vrati • definiranje intervala čekanja Object[] rez = null; TimingOutCallback callback = new TimingOutCallback(10 * 1000); XmlRpcClient client = new XmlRpcClient(url); client.executeAsync("Utility.wait", arg, callback); try { rez = (Object[]) callback.waitForResponse(); } catch (TimeoutException e) { System.out.println("Poslužitelj ne odgovara"); } catch (Exception e) { System.out.println("Vraćena greška."); Apache XML-RPC Dodatak 6
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><int>4</int></value> </member> <member> <name>faultString</name> <value> <string> Too many parameters. </string> </value> </member> </struct> </value> </fault> </methodResponse>