Your SlideShare is downloading. ×

JSR 172

2,498

Published on

Questa presentazione illustra l'utilizzo della JSR 172, Web Services API for J2ME. Il seminario e' stato presentato al primo Java Italian Portal Day (2005)

Questa presentazione illustra l'utilizzo della JSR 172, Web Services API for J2ME. Il seminario e' stato presentato al primo Java Italian Portal Day (2005)

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,498
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JSR 172: Gestire ai meglio i Web Services da dispositivi mobili Stefano Sanna gerda@crs4.it gerdavax@tiscaIi. it
  • 2. Step del talk - Introduzione: web services su mobile - Web Services API forJ2ME — JAXP: decodificare XML —JAX-RPC: invocare metodi remoti - Dalla teoria alla pratica. .. - Conclusioni e ringraziamenti JavaPortal e un progetto senza fine di lucro di:
  • 3. Introduzione - Una interessante concorrenza di eventi: — I web services convergono verso una concreta interoperabilita, grazie Web Services Interoperability (WS-I) Organization — La crescente diffusione di EDGE e UMTS porta maggiore larghezza di banda sui dispositivi mobili — 500 milioni di cellulari hanno Java ME. .. JavaPortal e un progetto senza fine di lucro di:
  • 4. Web Services API forjzME i Il Java Community Process ha definito la specifica JSR 172, che porta nel mondo Java ME: — Un subset di 1.2x): = 1.7. — Un subset di , l.'—: )(-W‘-g= 2 2:41 JnvnPortnl r‘ un proqrrtîo ‘ÎPHYÎI hnr- di lucro di: i
  • 5. Caratteristiche principali - Footprint estremamente ridotto (w35KB perJAXP e —»25KB perJAX-RPC) - Performance ottimizzate per dispositivi Iow-end ° Supporto a tutti i profili basati su CLDC 1.0/1.1 e CDC - Interfaccia RPC (SPI) indipendente dalla particolare implementazione della libreria
  • 6. Architettura MID1et WSA JAXP JAX-RPC MIDP/ PP CLDC/ CDC JavaPortai e un progetto senza fine di lucro di:
  • 7. WSA: alcune note i I due subsetJAXP eJAX-RPC, benche‘ simultaneamente presenti all'interno di ogni implementazione della WSA, sono W- : ':'; ‘ : 3 'l: :': JAX-RPC potrebbe usare una libreria di decodifica embedded r In pieno spiritoJava ME, la specifica stabilisce i ‘2:; is": ' ' ': i produttori di dispositivi possono aggiungere feature opzionali (hardware permettendo. ..) JnvnPortnl r un proqrrtto ‘ÙPHYÎI hnr- di lucro di: i
  • 8. JAXP 1.2 subset - E‘ I'API per il parsing di documenti XML - Caratteristiche: — Requisiti minimi: CLDC 1.0 e 35KB footprint! — sottoinsieme della specifica JAXP 1.2 — Supporto all'interfaccia SAX 2.0 — Supporto agli XML namespaces — Supporto codifiche UTF-8 e UTF-16 — L'eventuale validazione con DTD e‘ opzionale (piuttosto improbabile. ..) JavaPortal e un progetto senza fine di lucro di:
  • 9. JAXP - javax. xm1.parsers — contiene il SAX parser, la relativa factory e le classi delle eccezioni - org. xml. sax — contiene il core delle API SAX (Attribute, Locator, InputSource. ..) - org. xmt. sax. he1pers — contiene la classe DefaultHandler per la gestione degli eventi di parsing JavaPortal e un progetto senza fine di lucro di:
  • 10. Limitazioni JAXP - Nessun supporto SAX 1.0 (vedi SAX 2.0) - Nessun supporto XSLT - Nessun supporto DOM 1.0 e 2.0 - Validazione opzionale 10
  • 11. jAX-RPC 1.1 subset - E‘ I'API per I'invocazione remota di metodi attraverso documenti XML - Caratteristiche: — Supporta WSDL 1.1 — Supporta SOAP 1.1 (1.2 in futuro) — Supporto XML 1.0 e XML Schema — Binding su SOAP e trasporto H'l'l'P (con supporto autenticazione base) — Conforme al WS-I Basic Profile 1.0 11 JavaPortal e un progetto senza fine di lucro di:
  • 12. jAX-RPC - javax. xm1.rpc — contiene l'interfaccia Stub ° javax. microedition. xm1.rpc — contiene classi e interfacce della SPI - javax. xm1.namespace — contiene la classe QName - java. rmi — contiene l'interfaccia Remote, da cui dipende Stub JavaPortal e un progetto senza fine di lucro di: 12
  • 13. WSDL-Java Mapping xsdziong long java.1ang. Long xsd: int int java.1ang. Integer xsdzshort short java.1ang. Sh0rt xsd: byte byte java.1ang. Byte xsdzfloat float java.1ang. F1oat xsd: double double java.1ang. D0ub1e xsdzstring String l_ . _ _ _ . _ ____ J xsd: base04B1nary byte[] Str1"gE: ;jqÎ8°5"“” xsd: hexB1nary byte[] - - - - - - - - xsd: comp1exType sequenza di classi e primitivi vettory di primitivi e tipi complessi, secondo XML array JavaPortal e un progetto senza fine di lucro di:
  • 14. Limitazioni jAX-RPC - Non sono supportati messaggi SOAP con attachment ne‘ message handlers - Non e‘ gestita la rappresentazione encoded di messaggi SOAP (esclusivamente literal) - UDDI non supportato in questa versione - Non e‘ prevista l'implementazione di endpoint (nessun web service provider su telefonino! ) JavaPortal e un progetto senza fine di lucro di: 14
  • 15. Limitazioni. .. in pratica - Molti servizi web pubblici non sono conformi WS-I: per la vera interoperabilita‘ occorre aspettare. .. - Strumenti utilissimi, quali | 'Instant Deployment di AXIS, non posso essere i utilizzati! in quanto ® Stub Generation Faiied non supportano la modalita‘ Iiteral Stub Seneratol Error JavaPortal e un progetto senza fine di lucro di: 15
  • 16. WSA: la specifica in dettaglio - Vediamo, con alcuni esempi, come: — decodificare un documento XML — invocare i metodi di un web service provider 16 JavaPortal e un progetto senza fine di lucro di:
  • 17. lv] l flange Configurations. .. l -l' mimi r‘ ii-s r3 Fllîloflll . fl gbmugg Emulagor Platform‘ lJZMEVi/ lreless Toolkn 2 2 lLVJ l Manag; Emulators. . 9 I} Appllcelion Descriplor Di Annbuves l} Mllîilets D) PuSh lìegistry D API Permissions Qevltc. Dei/ ice Configuration. . CLDC-1.1 7 ' “mi” Devicefioflle l'9) NIDO-2.0 Source: Fiitering Como. ..” gptional Packages: Librari" G “WWW Bluelooth A se s2) Optional Packages 1.0 0b(u5"""° i Optional Packages 1 0 CreailrigjAR Slgnlng Ceneraiingjavadoc ' - ' — N1 91th? ! l-Ù i Runmns Mobile Media m 1.1 a Demwmg Wireless Messnglng API 1.1 vlirelex: Messaglng APl 2.0 JavaPortai e un progetto senza fine di lucro di:
  • 18. JAXP: decodificare XML - Due fasi principali: — Inizializzazione: - Handle all'input stream del documento XML - Handle ad una istanza del parser — Implementazione di un custom handler per la decodifica dei documento JavaPortal e un progetto senza fine di lucro di:
  • 19. Il “teIaio" della MIDIet. .. public ctass JIPDayAgenda extends MID1et { private Display display; private Form gui; private ParsingEventHand1er parsingEventHand1er; public JIPDayAgenda() { initi); } public void startAPP() { disp1ay. setCurrent(gui); } public void pauseApp() {. ..} public void destroyApp(boo1ean unconditional) {. ..} JavaPortal e un progetto senza fine di lucro di:
  • 20. lnizializzazione della GUI private void init() { display = Display. getDisp1ay(this); gui = new F0rm("JIPDay 2005"); / / PARSER. .. nella prossima stide! ab private void manageError(String message) { Atert atert = new A1ert("Imp0ssibi1e avviare", message, nuli, A1ertType. ERROR); display. setCurrent(a1ert, gui); } JavaPortal e un progetto senza fine di lucro di:
  • 21. Inizializzazione del parser try { SAXParserFactory factory = SAXParserFactory. newInstance(); SAXParser parser = factory. newSAXParser(); Inputstream input = getC1ass(). getResourceAsStream ("/ agenda. xm1"); parsingEventHandler = new ParsingEventHand1er(); parser. parse(input, parsingEventHand1er); catch(IOException ioe) { manageError(“Errore di I/0"); } catch(SAXException se) { manageError(" . .. "); } catch(ParserconfigurationException pce) { manageError("“); } JavaPortal e un progetto senza fine di lucro di: 21
  • 22. Esempio di parsing - Supponiamo di avere un documento XML contenente il programma del JIP Day 2005 e di volerne fare il parsing: <iipday> <ta1k tit1e= "SIP-wiMax" speaker= "Nino Guarnacci"/ > <ta1k titte= "Port1et" speaker= ”Simone Federici”/ > <ta1k tit1e= "JSR172 WSA" speaker= "Stefano Sanna"/ > <ta1k . ../ > </ jipday> JavaPortal e un progetto senza fine di lucro di:
  • 23. EventHandler (1) private class Parsingfiventflandler extends DefaultHandler { private boolean parsing = false; private static final String TALK_ELEMENT = "talk"; private static final String TITLE_ATTRIBUTE = "title"; private static final String SPEAKER_ATTRIBUTE = "speaker"; public void startDocument() throws SAXException { parsing = true; } public void endDocument() throws SAXException { parsing = false; } JavaPortal e un progetto senza fine di lucro di: 23
  • 24. EventHandler (2) public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (TALK_ELEMENT. equals(qName)) { Stringltem newltem = new StringItem("", ""); newltem. setLabel(attributes. getvalue(SPEAKER_ATTRIBUTE) + Ilxnll ); newltem. setText(attributes. getvalue(TITLE_ATTRIBUTE)); gui. append(newItem); public void endElement() throws SAXException { . .. } JavaPortal e un progetto senza fine di lucro di:
  • 25. _. A JIPDay Roma 30 Settembre 2005 L'agenda funziona! :-) Ogni StringItem I ' potrebbe avere IIAYOUT HYPERLINK (o' i BU1TON)e avere un | ‘comando associato peri l la visualizzazione i deIl'abstract | dell'intervento I I _ _ _ _ _ _ _ _ JavaPortal e un progetto senza fine di lucro di: eflî-I Davide del Vetchio Usare Spring a pieno regime con webFiow Nilo Guamacti Introduzione allo standard SIP e possibili integrazioni con RFID e WiMax Sinone Federici JSR 168: i benefici di sviluppare Ponlet standard Stefano Sanna JSR 172: gestire al meglio i web services da aisposiiivi mobili 25
  • 26. 1J i-i i, il jAX-RPC: invocare metodi remoti - Utilizzare le routine di invocazione remota all'interno di un mobile web service consumer e‘ estremamente semplice. Occorre: — Recuperare il WSDL del servizio di interesse e verificare la compatibiIita' WS-I — Generare lo stub a partire dal WSDL — invocare i metodi dello stub dalla MIDIet 26 JavaPortal e un progeflo senza fine di lucro di:
  • 27. jAX-RPC: invocare metodi remoti MIDIet REOUEST RESPONSE Stub Generator 27 JavaPorfal e un progetto senza fine di lucro di:
  • 28. Stub i La creazione dello Stub (interfaccia e implementazione) viene effettuata . -. -' e ' 11:2 attraverso opportuni strumenti (Stub Generator) t Lo Stub e‘ : ":: —:' : :'*:3 dalla particolare implementazione della WSA pi; IC—'IJ gan- o o l «p t Lo Stub invoca i metodi delle classi della Service Provider Interface JrivnPortnl f‘ un proqotto senza ÎIHF‘ di lucro di: 28
  • 29. Strumenti di sviluppo - Attualmente la WSA e' supportata, tra gli altri, da: — Sun J2ME Wireless Toolkit 2.2 o superiore - Nokia Developer's Suite 3.0 - SonyEricsson SDK 2.2.2 forlava ME Platform — IBM WebSphere Studio Device Developer — Apache Mirae Project 29 JavaPortal e un progetto senza fine di lucro di:
  • 30. Servizio d'esempio - GlobaIWeather: fornisce informazioni meteo aggiornate su numerose citta‘ del mondo — Recensito su: http: //www. xmethods. com — WSDL: http : // www . webservicex . com/ globalweather . asmx? wSDL I test sono stati eseguiti su Windows XP, Linux Mandrake e Mac O5 X Tiger 30 JavaPorfal e un progetto senza fine di lucro di:
  • 31. Utilizziamo il Wireless Toolkit ff [un | ‘|lil"l7 Help v un” Pmjfl-t" ‘Qppn Pmjpn _, I. il'llllijg l. llllll I ll g Qpen Project . .. . . 2, _ j gate Console WSDL Filename or URL: Output Pìlhî l Output Pankaoe: CLDC Verslon 7 (lDC 1.0 O CLDC 1.1 JavaPortal e un progetto senza fine di lucro di: Lltìl C DHSDI! o- ijfigraggmqjgifll Database Emulators: b Clean Database 1 Memory Monnor Open Sessiun Network Monitor Open Session Ptofller Opeg Sessinn WMA ‘ Open Console Seunlty Sian MIDIet Manage certificate; Slllh IOOIS l Stub generalor glose 31
  • 32. Stub Generator "71 in iîÎi-îriwaiiîir ΑlÎ1|IÎii'_l WSDL Filename or URL: lhttpJ/ wvwiwebservicex. comjglobalweather. asmx? wSDL firowse. .. i CLDC Version '36’; CLDC 1.0 ILÎ; CLDC L1 JavaPortal e un progetto senza fine di lucro di:
  • 33. Lo stub e‘ pronto all'uso! i Lo Stub Generator o e Project: ‘g; 2% File: Puritime ha creato: - L'interfaccia w "*""*}”'fi'*"'“" LÈÎLIIIÙîB'y'C0|. Jl’iîl‘; '.j3'-la — Lo Stub vero e proprio _ — Classi di supporto °- per ciascun metodo invocato e relativa risposta Cet Citie: Eìg-‘Courìtrylìe p cirisej air a C etllife a! h l'. _| a C attira at h e rRe s p on se . j ai: a Clo b aiuti: ai li e rS c-ap jaux a Ciiflbaliîie arherîoapjttiti Java l-slcibile Clo b alliîie ai. h r: r. j a JfwnPortJl r‘ un progetto ‘ìnnzn fInF- di lucro di: i
  • 34. L'interfaccia dello Stub import java. rmi. Remote; public interface Globalweathersoap extends Remote { public String getHeather(String cityName, String countryName) throws java. rmi. RemoteException; public String getCitiesByCountry(String countryName) throws java. rmi. Rem0teException; JavaPorfal e un progetto senza fine di lucro di:
  • 35. Lo Stub /1 import javax. xml. rpc. JAXRPCExcepti0n; import javax. xml. namespace. QName; import javax. microedition. xml. rpc.0peration; import javax microedition xml rpc Type; import javax. microedition. xml. rpc. ComplexType; import javax. microedition. xml. rpc. Element; public class GlobalweatherS0ap_Stub implements jipday. weather. GlobalweatherSoap, javax. xml. rpc. Stub { private String[] _propertyNames; private Objectll _PropertyValues; JavaPortal e un progetto senza fine di lucro di:
  • 36. Lo Stub /2 public GlobalweatherSoap_Stub() { _propertyNames new String[] {ENDPOINT_ADDRESS_PROPERTY}; _propertyValues = new 0bject[] {“http: //www. webservicex. com/ globalweather. asmx“}; JavaPortal e un progetto senza fine di lucro di:
  • 37. 1J n, ,° Property dell'interfaccia Stub - Attraverso il metodo _setProperty(l e‘ possibile impostare la configurazione dello Stub: — ENDPOINT_ADDRESS_PROPERTY — SESSION_MAINTAIN_PROPERTY — USERNAME_PROPERTY — PASSWORD_PROPERTY - Il Wireless Toolkit imposta l'indirizzo di default dell'endpoint 37 JavaPortal e un progetto senza fine di lucro di:
  • 38. MobileGlobalWeather - Scriviamo una MIDIet che utilizza lo Stub appena generato per visualizzare informazioni meteo su una citta‘ italiana (indicata attraverso un TextField) - Visto il lavoro svolto dallo Stub Generator, sara‘ sufficiente istanziare lo Stub e invocarne i metodi 38
  • 39. Il “teIaio" della MIDIet. .. public class MobileGlobalWeather extends MIDlet implements CommandListener, Runnable { private Display display; private Form cityF0rm; private TextField cityField; private Command queryCommand; private Command backcommand; private TextBox cityResult; private Form l0adingDialog; private GlobalweatherSoap_Stub stub; public MobileGlobalweather() { init(); } JavaPortal e un progetto senza fine di lucro di:
  • 40. Inizializzazione dello Stub private void init() { / / creazione della GUI. .. display = Display. getDisplay(this); cityF0rm = new Form("MobileGlobalWeather"); cityForm. setCommandListener(this); stub = new GlobalweatherSoap_Stub(); JavaPorfal e un progetto senza fine di lucro di: 40
  • 41. Gestione degli eventi public void commandAction(Command c, Displayable d) { if (c = = querycommand) { display. setCurrent(l0adingDialog); new Thread(this). start(); } else if (c = = backcommand) { display. setCurrent(cityForm); JavaPorfal e un progetto senza fine di lucro di:
  • 42. invocazione remota public void run() { try { String result = stub. getweather(cityField. getString l). "Italy"); cityResult. insert(result, 0); } catch(RemoteException re) { cityResult. insert("Errore invocazione remotal", 0); } finally { display setCurrent(cityResult); } JavaPortal e un progetto senza fine di lucro di:
  • 43. JIPDay Roma 30 Settembre 2005 Che tempo fa. .. obileClobulwealher vicini: lo send and eterne dala UÎ-Illg iii: nevi-nari. Ttiis uilll use '- rtiirie and mar result m charges t. n OK io use ainim e? JavaPortal e un progetto senza fine di lucro di: 43
  • 44. I JIPDay Roma 30 Settembre 2005 Sorpresa! :-) <7>imlversion= "1.D" encoaing= "mf-16">> (Currentweather) <Location>cagliari f Elmas, Ital): (LlEE) 39-15N 009—04E 5M</ Locatlon> <Time>Sep 29, 2005 — 04:45 PM EDY/ 2005 09 29 2045 UTC<fTime> <Wind> from the NW (310 degrees) at 10 MPH (9 KT).0</ Wind> <visibility> greater lhan 7 mile(sJ‘0</ VisioiIity> <Sl<yConditions> mostly Cl0udy<fSkVCOndi1I0nS> <Temperature> 68 F (20 C)</ Teni perature) <DewPoint> 62 F (17 C)</ DeuiPoint> <RelatrveHumidny> a29c<iRelariveHumidny> <Prr<<iirn> ìfl 1I‘in Hn (1070 JavaPorfal e un progetto senza fine di lucro di: W‘ 44
  • 45. La response e‘ un doc XML <? xml version= "1.0“ encoding= “utf—16"? > <CurrentWeather> <Location>Cagliari/ Elmas, Italy 39-15N 009-04E 5M</ Location> <Time>Sep 29, 2005 - 04:45 PM EDT / 2005.09.29 2045 UTC</ Time> <wind> from the Nw (310 degrees) at 10 MPH (9 KT):0</ wind> <Visibility> greater than 7 mile(s):0</ Visibility> <SkyConditions> mostly cl0udy</ SkyConditions> <Temperature> 68 F (20 C)</ Temperature> <DewPoint> 62 F (17 C)</ DewP0int> <RelativeHumidity> 82%</ RelativeHumidity> <Pressure> 30.12 in. Hg (1020 hPa)</ Pressure> <Status>Success</ Status> </ Currentweather> JavaPortal e un progetto senza fine di lucro di:
  • 46. Portnl r un proqrrtto ‘ionzn finr- dl lucro di: Stub Generator su WSDD i WebSphere Device Developer 5.6 (e successivi) dispone di una estensione per l'utilizzo della WSA su dispositivi palmari basati su PaImOS e Windows Mobile 2003 r Per l'installazione delle Web Services Extensions consultare il tutorial: http: //www- 128.ibm. com/ developerworks/ edu/ ws- dw-ws-mobile-i. html 46
  • 47. WSDD: Creazione stub - WSDD, ottenuto il WSDL del servizio di interessa, crea l'interfaccia al servizio, lo Stub e, se richiesto, una MIDlet minimale con cui interrogare il servizio! - In fase di packaging e' possibile includere la libreria WSA (WebServicesMIDP) all'interno del JAR file della nostra applicazione. .. 47
  • 48. Progranma di generazione matrici del client del servizio Web Questa procedura guidata crea i File Java necessari per accedere ad un servizio web da un dlent MIDP. cartella di grigi-io: I mobileGlobalweatherisrc Sfoglia. .. I liipdav tittpJiwwwJ/ «rebservicex. comig| obalweather. astnx>WSDL Pacchetto: Ubicazione = Opzioni dell'applicazione: F7 Genera mldlet l- Config sicurezza JavaPortal e un progetto senza fine di lucro di:
  • 49. Dalla teoria alla pratica - Vista la specifica, affrontiamo alcuni problemi pratici: — come gestire Ie invocazioni remote sincrone — quale codifica utilizzare (document/ Iiteral? ) — come utilizzare emulatori privi di WSA — come utilizzare dispositivi privi di WSA — come integrare servizi esistenti - Prima di tutto: dove sono i dispositivi? 49 JavaPortal e un progetto senza fine di lucro di:
  • 50. Mano ai dispositivi! - I dispositivi dotati di WSA sono in arrivo: — Nokia N91, N90 — Sony-Ericsson W600/W550 — Palmari compatibili WSDD 50 JavaPortal e un progetto senza fine di lucro di:
  • 51. invocazioni sincrone i WSA genera chiamate sincrone: assicurarsi che queste siano gestite all'interno di r2? : s3 : s "'2' dalle — p. routine di gestione della GUI. i Non tutti gli esempi reperibili in rete (o generati automaticamente dai tool. ..) tengono in considerazione questo aspetto. .. JfwnPortJl r‘ un proqrrtîo ‘ÎPHYÎI llnr- di lucro di: i 51
  • 52. invocazioni sincrone - Senza Thread: if (c = = invokecommand) { stub. startEngine(); - La chiamata a sta rtEngine() e‘ bloccante e puo‘ condurre ad un deadlock dell'applicazione JavaPortal e un progetto senz 52 a fine di lucro di:
  • 53. Invocazioni su Thread separato class StartEngineTask implements Runnable { public void run() { stub. startEngine(); if (c invokeCommand) { new Thread(startEngineTask). start(); JavaPortal e un progefto senza fine di lucro di: 53
  • 54. RCP/ Iiteral o document/ literal? " Iîllfibfllìlfllhr Jîllfll n: tutina un» m: h han)» r. » i man 7.: . nrn ‘u: DL. 1m "fina h-ofourw Trfffhùnfù m. w. - e An error occurred whlle creatlno J2ME Web Services stub clesses: ievalangixception: Input in operetlon Getweether uses wrong encodhg SOAP style (). Documentillteral Is the only supportaci SOAP style. [E] - Finche‘ possibile, utilizzare sempre document/ Iiteral Sete! Zecvmvu un, " ' n w: «r: mi, ” a JavaPortal e un progetto senza fine di lucro di:
  • 55. 1J n v, "i Emulatori privi di supporto WSA - Alcuni emulatori sono privi di supporto WSA e non sempre e‘ possibile effettuare l'aggiornamento ad un versione differente. Ad esempio: — Nokia Developer's Suite per Linux — MPowerPlayer per Mac OS X 55 JavaPortal e un progetto senza fine di lucro di:
  • 56. 1J n v, il Emulatori privi di supporto WSA - Utilizzando il WSDD e‘ possibile: — esportare la libreria WSA per MIDP all'interno del JAR file dell'applicazione ed eseguirla all'interno dell'emulatore — esportare la libreria WSA per MIDP nel JAR dell'applicazione e rimuovere quest'ultima - Nota: tali approcci sono consentiti solo a scopo sperimentale. .. 56 vaPortal e un progetto senza fine di lucro di:
  • 57. lNSA all'interno del JAR file MobileGlobalWeather Mobileclobalweath ""72 ”""" °"°"' E! Fornitore 1.0.0 Cetweather CityName: Cagliari Cetweather CountryName: GetCitiesByCountry CountryName: Cetweather resu Its ? xml versi o J" encoding Cagliari / Elmas. Italy (LIEE) 39-1SN 009-O4E 5M Sep 28,2005 - 03:15 PM EDT/ 2005.09.28 1915 UTC from the E (100 degrees) at S MPH (4 KT): O G powered by "" JavaPortal e un progetto senza fine di lucro di:
  • 58. '39,. WSA “custom" sul dispositivo? - la WSA introduce i package java. *, javax. * di dominio dei namespace protetti: “ la VM del dispositivo ne permette l'uso solo autorizzazione ! se i package sono riusrita contenuti all'interno del runtime del dispositivo! JavaPortal e un progetto senza fine di lucro di:
  • 59. 1J e v, il Integrazione di servizi esistenti - Essendo in una fase di transizione e‘ consigliabile: — finche‘ possibile accedere a servizi descritti attraverso rapprensentazione document/ Iiteral — lato client, utilizzare solo strumenti che facciano esplicitamente uso della Service Provider Interface (Element, Operation, .. .) - Soluzione ottimale: scrivere i frontend ex novo". >( 59 JavaPortal e un progetto senza fine di lucro di:
  • 60. Dopo la WSA. .. - Il Java Community Process prosegue: — JSR 279: Service Connection API forJavaME - Introduce maggiore astrazione rispetto al server provider vero e proprio, includendo le interfacce all'interno del Generic Connection Framework —]SR 280: XML API forJava ME - API completa per la gestione di documenti XML — JSR 239-240: Mobile Service Architecture for CLDC and CDC (web services per tutti? ) 60 JavaPortal e un progetto senza fine di lucro di:
  • 61. Bibliografia - JSR 172: J2ME Web Services Specification — Java Community Process http: //jcp. org/ en/ jsr/ detaiI? id=172 - Web Services APls forJ2ME — C. Enrique Ortiz IBM Developerworks http: //www- 128.ibm. com/ developerworks/ Iibrary/ wi—jsr e successivi 61 JavaPortal e un progetto senza fine di lucro di:
  • 62. Bibliografia - La piattaforma J2ME e i Web Services — Massimo Carli Mokabyte n. 94 e 96 http: //www. mokabyte. it - La Web Services API di J2ME - Emanuela De Vita, Stefano Sanna Speciale Programmazione Mobile Computer Programming 150, G. E. Infomedia 62 JavaPortal e un progetto senza fine di lucro di:
  • 63. Conclusioni e ringraziamenti - I dispositivi WSA-enabled stanno arrivando: l'adozione di nuovi attori in scenari SOA e‘ possibile con sforzo modesto. - Attendiamo i mobile provider. .. : -) Ringrazio Emanuela De Vita, Antonio Pintus e Monica Tola er aver condiviso codice, web services e dispositivi! JavaPortal e un progetto senza fine di lucro di: 63
  • 64. Contatti - Stefano Sanna — Email: gerda@crs4.it gerdavax@tiscaIi. it - Web site: http: //www. gerdavax. it ° CRS4: — http: //www. crs4.it - JUG Sardegna — http: //www. jug-sardegna. org JavaPortal e un progetto senza fine di lucro di:
  • 65. Licenza JSR 172: Gestire al meglio i Web Services da dispositivi mobili (Versione 1.0) (C) 2005 Stefano Sanna (gerdavax@tiscali. it) è garantito il permesso di copiare, distribuire e/ o modificare questo documento seguendo i termini della Licenza per Documentazione Libera GNU, Versione 1.1 0 ogni versione successiva pubblicata dalla Free Software Foundation. Una copia della licenza in lingua italiana è disponibile presso: httpfl/ wwvinsoftwarellbero. lt/ gnudoc/ fdl. it. html Realizzato in ambiente Mac OS X con OpenOffice 1.1.2 Tutti i marchi commerciali sono di proprietà dei rispettivi titolari e sono stati citati in questa presentazione a solo scopo illustrativo. JavaPortal e un progetto senza fine di lucro di:

×