Java enterprise edition
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

Java Enterprise Edition PowerPoint PPT Presentation


  • 96 Views
  • Uploaded on
  • Presentation posted in: General

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 ”

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Java enterprise edition

Java Enterprise Edition

Gabriele Tolomei

DAIS – UniversitàCa’ FoscariVenezia


Java web services

Java Web Services


Web services soap vs restful

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”


Java web services soap vs restful

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


Web services soap

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


Web services soap1

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”


Web services soap2

Web Services SOAP


Service oriented architecture soa

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)


Service oriented architecture soa1

Service Oriented Architecture (SOA)


Jax ws java api for xml bases web services

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


Jax ws java api for xml bases web services1

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


Jax ws java api for xml bases web services2

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


Web services su jboss

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)


Web services su jboss1

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


Java web services web tier

Java Web Services (Web Tier)

  • I WSs creatinel Web Tier sonooggetti “normali” mascherati da Servlets

  • Nessunainterfacciaspecifica da implementare come nelcasodelleHttpServlet


Java web services web tier1

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)


Java web services web tier2

Java Web Services (Web Tier)


Java web services annotazioni

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


Java web services deployment

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


Java web services packaging

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


Java web services client

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


Java web services client1

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


Java web services client2

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”


Java enterprise edition

Nome configurazione

Path dell’eseguibilewsconsumeinstallatonellavostra directory JBoss (su Win usarewsconsume.bat)

Progetto client su Eclipse

Parametri di esecuzione


W sconsume bat sh

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


W sconsume bat sh1

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


Hellowebserviceclient java

HelloWebServiceClient.java

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


Eseguire il client nota

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


Eseguire il client

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


Web service come stateless session bean

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.)


  • Login