java enterprise edition
Download
Skip this Video
Download Presentation
Java Enterprise Edition

Loading in 2 Seconds...

play fullscreen
1 / 30

Java Enterprise Edition - PowerPoint PPT Presentation


  • 143 Views
  • Uploaded on

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 ”

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Java Enterprise Edition' - chinue


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

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”
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)
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 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”
slide24

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