1 / 30

Java Enterprise Edition

Java Enterprise Edition. Gabriele Tolomei DAIS – Università Ca ’ Foscari Venezia. Java Web Services. Web Services: SOAP vs. RESTful. 2 diversi tipi di “Web Services” I Web Services SOAP sono quelli “ classici ”

chinue
Download Presentation

Java Enterprise Edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Enterprise Edition Gabriele Tolomei DAIS – UniversitàCa’ FoscariVenezia

  2. Java Web Services

  3. Web Services: SOAP vs. RESTful • 2 diversi tipi di “Web Services” • I Web Services SOAP sonoquelli “classici” • Si basanosulloscambio di messaggi SOAP (un dialetto XML) sulprotocollo HTTP • Fornisconoilsupporto per transazioni, sicurezza, scambioasincrono di messaggi, etc. • Approccio “pesante” • I Web Services RESTfulsonopiù “recenti” • Si basanoesclusivamentesulloscambio di messaggitramiteprotocollo HTTP (GET, POST, PUT, DELETE) • Il contenutodeimessaggièsolitamente JSON o XML • Approccio “leggero”

  4. Java Web Services: SOAP vs. RESTful • Java mette a disposizionemoltelibrerie per costruireedinteragire con i Web Services • Alcuniesempi di librerie per i Web Services SOAP sono: • JAX-WS  noi ci concentreremosuquestalibreria! • Apache Axis • Alcuniesempi di librerie per i Web Services RESTfulsono: • Restlets • Spring REST Facilities

  5. Web Services SOAP • Nuovatecnologiacheconsentel’interazione e l’interoperabilitàtraapplicazionidistribuite • Sonoapplicazioni a séstantichepossonoesserepubblicate, localizzate, ed invocate in modoremoto (via Internet) • I Web Services possonoimplementaresemplicifunzioni ma ancheprocessipiùcomplessi

  6. Web Services SOAP • Costituiscono un altroesempio di Remote Procedure Call (RPC) • Sonoindipendentidallapiattaforma e dallatecnologia • Ad es. un client scritto in C puòinteragire con un WS in esecuzionesu un container Java EE • Si basanosu standard noti: HTTP + XML • Menoefficientirispetto ad altresoluzioni come RMI, Jini, CORBA, DCOM, etc. ma più “facili”

  7. Web Services SOAP

  8. Service Oriented Architecture (SOA) • Modello di architettura “a servizi” • Glielementi di questomodellosono: • SOAP (Simple Object Access Protocol) • Specificailformato del messaggio, l’encoding, e tutte le convenzioni per rappresentare la chiamata e la rispostadellaproceduraremota • UDDI (Universal Description Discovery and Integration) • Standard per la pubblicazionedei WSs • WSDL (Web Service Description Language) • “Manifesto” del WS (descrizionedellecaratteristiche del servizio)

  9. Service Oriented Architecture (SOA)

  10. JAX-WS: Java API for XML-bases Web Services • Chiamata di proceduraremotasu XML • Scambio di messaggi via SOAP • Trasmissionedeimessaggi via HTTP • JAX-WS “nasconde” allosviluppatore la complessità del protocollo SOAP • Il supporto a runtime traduce le chiamatedella API JAX-WS da/a messaggi SOAP • Consentel’accesso a WS in esecuzionesualtrepiattaforme

  11. JAX-WS: Java API for XML-bases Web Services • Chiamata di proceduraremotasu XML • Scambio di messaggi via SOAP • Trasmissionedeimessaggi via HTTP • JAX-WS “nasconde” allosviluppatore la complessità del protocollo SOAP • Il supporto a runtime traduce le chiamatedella API JAX-WS da/a messaggi SOAP • Consentel’accesso a WS in esecuzionesualtrepiattaforme

  12. JAX-WS: Java API for XML-bases Web Services • Lato server: • Lo sviluppatoredeve solo specificare le procedure remote cheil WS espone • Ovverodefinireimetodi in un’intefacciaappositascritta in Java • Lo sviluppatoreimplemental’interfacciacreata in una o piùclassitramitel’uso di “annotazioni” (@) • Lato client: • Si crea un “proxy” (ovvero un oggetto locale al client cherappresentailservizioremoto) • Si invocanoimetodisul proxy locale. • La libreria JAX-WSpenserà a “tradurre” le chiamateaimetodisul proxy locale in chiamate al servizioremoto via SOAP • Infine, le risposte SOAP ottenute dal servizioremotosarannonuovamentegestite da JAX-WS e tradotte per il client

  13. Web Services suJBoss • Su JBoss 5.x icomponenti Java EE possonoagiresia da “fornitori” (providers) che “consumatori” (consumers) di Web Services • Le applicazioni Java EE possonoesporre un WS come: • Stateless Session Bean (EJB Tier) • Oggetto Java “tradizionale” o Plain Old Java Object (Web Tier)

  14. Web Services suJBoss • Il supporto per i Web Services suJBossèaffidato a deploy/jbossws.sar • Il protocollo per iltrasportodeimessaggi (HTTP) ègestito dal Web container (Apache Tomcat) • Il protocollochespecificailformatodeimessaggi (SOAP) ègestito da Apache Axis • Per vedere la lista di tuttii WSs disponibilisullapropriaistanza server JBoss: http://localhost:8080/jbossws/services

  15. Java Web Services (Web Tier) • I WSs creatinel Web Tier sonooggetti “normali” mascherati da Servlets • Nessunainterfacciaspecifica da implementare come nelcasodelleHttpServlet

  16. Java Web Services (Web Tier) • Creare un progetto Web dinamicosu Eclipse • Ad es., HelloWebService • Definire un package • Ad es., it.sipe.javaee.ws.example • Creareunanuovaclasse Java cherappresental’end-point (punto di accesso) del WS • Ad es., HelloWebService • Nota chesuJBossilnome di questa pseudo-Servlet NONdeveessere del tipo *Servlet.java • Implementareilmetodo del servizio • Ad es., hello(String nome)

  17. Java Web Services (Web Tier)

  18. Java Web Services: Annotazioni • @WebService èobbligatoria e specificache la classeè un Web • @SOAPBinding specificailtipo di binding SOAP unavoltadeployatoilservizio (RPC) • @WebMethod esponeilmetodo come parte deiserviziofferti dal WS • @WebResult  indicailrisultatodell’invocazione del metodo • @WebParam  parametro del metodo

  19. Java Web Services: Deployment • Occorreaggiungerenel deployment descriptor (web.xml) una entry apposita (tag) chespecifichi la pseudo-Servlet cheabbiamocreato • Il nomedella pseudo-Servlet èimportante! Saràquello con cui ci riferiremoal Web Service url-pattern indicadove sitroveràil file WSDL associato al WS

  20. Java Web Services: Packaging • Crearel’archivio .war dal progetto Web dinamico • Specificareil server su cui eseguireil deployment • Verificarecheil WS siacorrettamenteelencatonellalistadei WSs disponibili: http://localhost:8080/jbossws/services

  21. Java Web Services: Client • Qualsiasi client, per poterdialogare con ilnostro WS, deve “conoscere” le caratteristiche del/deiserviziesposti: • Firma del/deimetodi, parametri, etc. • Tuttequestecaratteristichesonocontenutesottoforma di un file XML standard (WSDL) associato al nostro WS e reperibileall’URL: http://localhost:8080/HelloWebService/sayHello?wsdl

  22. Java Web Services: Client • Il client puòaccedere al WS in 2 modi: • Tramiteinterfaccia Java remota • Se questaèdisponibile • Solitamente se ilservizioèstatosviluppato/è in esecuzionesuambiente Java • Dinamicamente • Se non èdisponibilealcunainterfaccia • Solitamentequandoilservizioèsviluppato in un altrolinguaggio

  23. Java Web Services: Client • Su Eclipse creare un nuovoprogetto Java (non un progetto Web dinamico) checonterràilcodice del client • Dal menu principale Run  External Tools  External Tool Configurations • Cliccaresu “Program”

  24. Nome configurazione Path dell’eseguibilewsconsumeinstallatonellavostra directory JBoss (su Win usarewsconsume.bat) Progetto client su Eclipse Parametri di esecuzione

  25. wsconsume.bat (.sh) • I parametri di esecuzionespecificano: -k  indica di generareilcodicesorgente del client -p  indicail package in cui creareilcodicesorgente -o  indica in quale progettogenerareilcodice (nelnostrocaso, ilprogetto Java cheabbiamoappenacreato) • Eseguirecliccandosu “Run” e fare un refresh del progetto

  26. wsconsume.bat (.sh) • Se tuttoèandato a buon fine verrannocreati 2 file: • HelloWebService.java interfaccia al Web Service • HelloWebService_Service.java “artefatto” locale lato client usato per accedere al Web Service remoto

  27. HelloWebServiceClient.java • Infine, occorrecreare la vera e propriaclasse client cheuseràl’artefatto per invocareil Web Service remoto

  28. Eseguireil Client: Nota • La slide seguentepresupponecheil server JBosssiastatoavviato da linea di comando (run.bat o run.sh) • Se JBossvieneavviatodall’interno di Eclipse occorre: • aggiungere la seguentedipendenzanello script di avvio -Djava.endorsed.dirs=${JBOSS_HOME}/lib/endorsed • se non presenti, copiareall’interno di questa directory iseguenti .jar da ${JBOSS_HOME}/common/lib/: • jboss-(native-)saaj.jar, jboss-(native-)jaxws.jar, jboss-(native-)jaxrpc.jar, jaxb-api.jar, xercesImpl.jar, xalan.jar, serializer.jar

  29. Eseguireil Client • Occorrecompilareilcodicesorgente del client edeseguireil packaging (.jar) • Spostarsinella directory di destinazione del file .jar • A secondadellaversionedellapiattaforma Java SE (runtime) usatatestareil client come segue: • Java SE 5 occorre far uso di librerieinclusenel server JBoss (Java EE) ovveroutilizzareil tool wsrunclient.bat (.sh) chesitrovanella directory ${JBOSS_HOME}/bin wsrunclient.bat–classpathHelloWebServiceClient.jarit.sipe.javaee.ws.example.client.HelloWebServiceClient • Java SE 6  include le librerie JAX-WS per cui èsufficiente java –classpathHelloWebServiceClient.jarit.sipe.javaee.ws.example.client.HelloWebServiceClient

  30. Web Service come Stateless Session Bean • Èpossibileesporreil WS come uno Stateless Session Bean • Creare un nuovoprogetto EJB su Eclipse • Aggiungereuno Stateless Session Bean (ad es. HelloWSBean.java) • Aggiungere le annotazioniviste in precedenza (@WebService, @WebMethod, etc.)

More Related