SlideShare une entreprise Scribd logo
1  sur  19
Lezione 9: Web Service in
               Java
         Corso di Programmazione in Rete
        Laurea Magistrale in Ing. Informatica
          Università degli Studi di Salerno



1
Outline

    ✦ I tool necessari

    ✦ Realizzazione del server

    ✦ Realizzazione del client




2
I tool necessari

    ✦ Per realizzare WS in Java occorre:
     •   librerie per i protocolli usati (es. SOAP)
     •   tool per la generazione di codice Java a partire da
         WSDL
    ✦ Esistono diversi ambienti per la
      realizzazione di WS in Java
     •   Apache Axis/Axis2
     •   JBoss WS (RedHat)
     •   Glassfish Metro (Sun)

3
I tool necessari


    ✦ I diversi ambienti non sono
      (completamente) compatibili tra loro a
      livello di codice sorgente
    ✦ I server e i client sono però interoperabili
      (anche con client/server scritti in altri
      linguaggi)



4
Glassfish Metro

    ✦ Componente dell’application server
      Glassfish di Sun
    ✦ Utilizzabile anche con altri application
      server (es. Tomcat)
    ✦ Implementa l’API Java API for XML Web
      Services (JAX-WS), proposta da Sun
      come standard per i WS in Java



5
Glassfish Metro
    ✦ Download:
     •   https://metro.dev.java.net/
    ✦ Installazione:
     •   dopo aver scaricato il file .jar, l’ambiente viene
         scompattato con il comando:
         ‣   java -jar metro-1_5.jar

     •   per l’installazione su Tomcat è necessario il tool
         Ant; dopo aver scompattato l’ambiente occorre
         usare il comando:
         ‣   ant -Dtomcat.home=<TOMCAT_DIR> -f metro-on-
             tomcat.xml install


6
Realizzazione del server


    ✦ Approccio Java-first
     •   si parte dalla realizzazione di una classe Java che
         implementa il web service
    ✦ Approccio WSDL-first
     •   si parte dalla creazione di un file WSDL che
         descrive il web service




7
Realizzazione del server
    ✦ Java-first
     •   più semplice
     •   richiede che chi definisce la specifica del servizio
         conosca Java
    ✦ WSDL-first
     •   consente la definizione del servizio a un
         progettista che non sia anche uno sviluppatore
     •   il WSDL può essere ottenuto da una descrizione di
         livello più alto (es. UML)
     •   richiede tool per la creazione del WSDL
    ✦ seguiremo l’approccio Java-first
8
Definizione del servizio
    ✦ Usando l’API JAX-WS, la definizione del
      servizio è semplicemente una classe con
      alcune annotazioni
     •   le annotazioni sono un’estensione del linguaggio
         Java introdotta nella vers. 1.5
     •   le annotazioni JAX-WS forniscono dei metadati
         sulla classe e sui suoi metodi per precisare il
         comportamento del web service
     •   l’unica annotazione obbligatoria è @WebService,
         che indica che una classe implementa un WS


9
Definizione del servizio
     ✦ Esempio: la calcolatrice
            package esempio.server;
            import javax.jws.*;

            @WebService
            public class Calculator {
            	 public double add(double a, double b) {
            	 	 return a+b;
            	 }
            	 public double subtract(double a, double b) {
            	 	 return a-b;
            	 }
            	 public double multiply(double a, double b) {
            	 	 return a*b;
            	 }
            	 public double divide(double a, double b) {
            	 	 return a/b;
            	 }
            }


10
Definizione del servizio
     ✦ Note
      •   le annotazioni JAX-WS sono nel package javax.jws
      •   è opportuno che la classe sia inserita in un
          package; il nome del package viene usato per
          definire il namespace del servizio
          ‣   il namespace è un URL usato da SOAP per evitare conflitti
              di naming tra servizi realizzati da organizzazioni diverse
          ‣   il package viene trasformato in un namespace invertendo i
              componenti del suo nome:
              -   esempio.server => http://server.esempio

          ‣   perciò in un contesto reale il package dovrebbe essere
              univoco, ad esempio contenendo il nome DNS dell’azienda
              -   ad esempio: it.unisa.esempio.server

11
Deployment
     ✦ Una volta creata e compilata la classe,
       occorre realizzare una web application da
       installare sotto Tomcat per offrire il
       servizio
     ✦ La struttura è quella classica, con
       l’aggiunta di un file di configurazione
      •   WEB-INF/
          ‣   web.xml
          ‣   sun-jaxws.xml
          ‣   classes/        (qui vanno i file compilati)
          ‣   ...
12
Deployment
     ✦ Nel file web.xml occorre configurare una
       servlet che gestisca i WS:
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app>
          <description>Calculator</description>
          <display-name>Calculator Web Service</display-name>
          <listener>
              <listener-class>
                com.sun.xml.ws.transport.http.servlet.WSServletContextListener
              </listener-class>
          </listener>
          <servlet>
              <servlet-name>Calculator</servlet-name>
              <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet
              </servlet-class>
              <load-on-startup>1</load-on-startup>
          </servlet>
          <servlet-mapping>
              <servlet-name>Calculator</servlet-name>
              <url-pattern>/calculator</url-pattern>
          </servlet-mapping>
13     </web-app>
Deployment
       ✦ Nel file sun-jaxws.xml occorre specificare
         le classi che implementano i WS:
     <?xml version="1.0" encoding="UTF-8"?>
     <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'
     version='2.0'>
             <endpoint
                     name="Calculator"
                     implementation="esempio.server.Calculator"
                     url-pattern="/calculator"/>
     </endpoints>


     ✦ Nota: l’url-pattern è relativo alla url
       dell’applicazione web

14
Deployment
     ✦ La cartella di deployment va come al
       solito inserita nella cartella webapps di
       tomcat
     ✦ Per verificare se il deployment ha avuto
       successo, possiamo accedere al WSDL
       generato automaticamente
       aggiungendo ?wsdl all’URL del web
       service:
      •   Ad esempio, se la web application è stata
          denominata metrocalc, l’url del WSDL è:
          ‣   http://localhost:8080/metrocalc/calculator?wsdl

15
Realizzazione del client
     ✦ Il punto di partenza è il WSDL
     ✦ Occorre generare uno stub per
       interfacciare il client al WSDL
     ✦ L’ambiente Metro mette a disposizione il
       comando wsimport per generare lo stub:
      •   wsimport -keep -p package               url-wsdl
          ‣   l’opzione -keep indica di conservare i sorgenti
          ‣   l’opzione -p consente di specificare il package in cui
              inserire le classi generate



16
Realizzazione del client


     ✦ Esempio:
      •   wsimport -keep -p esempio.stub ”http://localhost:
          8080/metrocalc/calculator?wsdl”
      •   crea una serie di file nel package esempio.stub,
          che possono essere importati sotto Eclipse




17
Realizzazione del client
     ✦ Tra le classi create da wsimport, ce ne
       sono due di interesse dello sviluppatore:
      •   una classe che rappresenta il web service nel suo
          insieme
      •   una classe che rappresenta un “end point”, ovvero
          un singolo punto di accesso al web service (un
          web service può avere più endpoints)
      •   il nome di queste classi dipende dal WSDL, quindi
          occorre esaminare i file prodotti da wsimport per
          capire come sono state denominate
          ‣   nel nostro caso, CalculatorService e Calculator


18
Realizzazione del client
      ✦ Usando le classi del service e
        dell’endpoint si può usare il web service
        come un normale oggetto:

     package esempio.client;
     import esempio.stub.*;
     public class Client {
     	 public static void main(String args[]) {
     	 	 Calculator calc=new
                      CalculatorService().getPort(Calculator.class);
     	 	 System.out.println("9 per 9 fa "+calc.multiply(9,9));
     	 }
     }




19

Contenu connexe

Tendances

Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket ProgrammingVipin Yadav
 
HTTP request and response
HTTP request and responseHTTP request and response
HTTP request and responseSahil Agarwal
 
Web develop in flask
Web develop in flaskWeb develop in flask
Web develop in flaskJim Yeh
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Heithem Abbes
 
HTTP Protocol Basic
HTTP Protocol BasicHTTP Protocol Basic
HTTP Protocol BasicChuong Mai
 
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Sylvain Maret
 
Introduction to webservices
Introduction to webservicesIntroduction to webservices
Introduction to webservicesGagandeep Singh
 
Saml vs Oauth : Which one should I use?
Saml vs Oauth : Which one should I use?Saml vs Oauth : Which one should I use?
Saml vs Oauth : Which one should I use?Anil Saldanha
 
Creating a Context-Aware solution, Complex Event Processing with FIWARE Perseo
Creating a Context-Aware solution, Complex Event Processing with FIWARE PerseoCreating a Context-Aware solution, Complex Event Processing with FIWARE Perseo
Creating a Context-Aware solution, Complex Event Processing with FIWARE PerseoFernando Lopez Aguilar
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web servicesmohammed addoumi
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 formsEyal Vardi
 

Tendances (20)

Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket Programming
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
Web Services - WSDL
Web Services - WSDLWeb Services - WSDL
Web Services - WSDL
 
HTTP request and response
HTTP request and responseHTTP request and response
HTTP request and response
 
Web develop in flask
Web develop in flaskWeb develop in flask
Web develop in flask
 
Soap, wsdl et uddi
Soap, wsdl et uddiSoap, wsdl et uddi
Soap, wsdl et uddi
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Python/Django Training
Python/Django TrainingPython/Django Training
Python/Django Training
 
HTTP Protocol Basic
HTTP Protocol BasicHTTP Protocol Basic
HTTP Protocol Basic
 
Controls
ControlsControls
Controls
 
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
 
Introduction to webservices
Introduction to webservicesIntroduction to webservices
Introduction to webservices
 
WPF
WPFWPF
WPF
 
Saml vs Oauth : Which one should I use?
Saml vs Oauth : Which one should I use?Saml vs Oauth : Which one should I use?
Saml vs Oauth : Which one should I use?
 
Php Framework
Php FrameworkPhp Framework
Php Framework
 
Apache web server
Apache web serverApache web server
Apache web server
 
web server
web serverweb server
web server
 
Creating a Context-Aware solution, Complex Event Processing with FIWARE Perseo
Creating a Context-Aware solution, Complex Event Processing with FIWARE PerseoCreating a Context-Aware solution, Complex Event Processing with FIWARE Perseo
Creating a Context-Aware solution, Complex Event Processing with FIWARE Perseo
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web services
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
 

Similaire à Lezione 9: Web Service in Java

Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Andrea Della Corte
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansDavide Nardone
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksNicolò Carandini
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioningNicolò Carandini
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioningNicolò Carandini
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Natale Vinto
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdfFrancesco Liuzzi
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di GoogleMssiStf
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 

Similaire à Lezione 9: Web Service in Java (20)

Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with Netbeans
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
ASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework BenchmarksASP.NET Core Web Framework Benchmarks
ASP.NET Core Web Framework Benchmarks
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 
Web app slots and webapi versioning
Web app slots and webapi versioningWeb app slots and webapi versioning
Web app slots and webapi versioning
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
[Laravel Day 2022] Deploy di Laravel su AWS Lambda (from Zero to Hero).pdf
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 

Plus de Andrea Della Corte

Lezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern ComportamentaliLezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern ComportamentaliAndrea Della Corte
 
Lezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern ComportamentaliLezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern ComportamentaliAndrea Della Corte
 
Lezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern ComportamentaliLezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern ComportamentaliAndrea Della Corte
 
Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliAndrea Della Corte
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliAndrea Della Corte
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliAndrea Della Corte
 
Lezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionLezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionAndrea Della Corte
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingAndrea Della Corte
 
Lezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme ProgrammingLezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme ProgrammingAndrea Della Corte
 
Lezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSLLezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSLAndrea Della Corte
 
Lezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationAndrea Della Corte
 
Lezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in RESTLezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in RESTAndrea Della Corte
 
Lezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPLezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPAndrea Della Corte
 

Plus de Andrea Della Corte (20)

Lezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern ComportamentaliLezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern Comportamentali
 
Lezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern ComportamentaliLezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern Comportamentali
 
Lezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern ComportamentaliLezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern Comportamentali
 
Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern Strutturali
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern Strutturali
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern Creazionali
 
Lezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionLezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e Subversion
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme Programming
 
Lezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme ProgrammingLezione 2: Pianificazione in Extreme Programming
Lezione 2: Pianificazione in Extreme Programming
 
Lezione 1: I metodi agili
Lezione 1: I metodi agiliLezione 1: I metodi agili
Lezione 1: I metodi agili
 
Lezione 5: Socket SSL/ TLS
Lezione 5: Socket SSL/ TLSLezione 5: Socket SSL/ TLS
Lezione 5: Socket SSL/ TLS
 
Lezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSLLezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSL
 
Lezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method Invocation
 
Lezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in RESTLezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in REST
 
Lezione 1: I/O in Java
Lezione 1: I/O in JavaLezione 1: I/O in Java
Lezione 1: I/O in Java
 
Lezione 2: I thread
Lezione 2: I threadLezione 2: I thread
Lezione 2: I thread
 
Lezione 3: Connessioni TCP
Lezione 3: Connessioni TCPLezione 3: Connessioni TCP
Lezione 3: Connessioni TCP
 
Lezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPLezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDP
 
Tutorial Matlab 2009
Tutorial Matlab 2009Tutorial Matlab 2009
Tutorial Matlab 2009
 
Introduzione ai CRM
Introduzione ai CRMIntroduzione ai CRM
Introduzione ai CRM
 

Dernier

Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024IISGiovanniVallePado
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxsasaselvatico
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereMarco Chizzali
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...Nguyen Thanh Tu Collection
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 

Dernier (20)

Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 

Lezione 9: Web Service in Java

  • 1. Lezione 9: Web Service in Java Corso di Programmazione in Rete Laurea Magistrale in Ing. Informatica Università degli Studi di Salerno 1
  • 2. Outline ✦ I tool necessari ✦ Realizzazione del server ✦ Realizzazione del client 2
  • 3. I tool necessari ✦ Per realizzare WS in Java occorre: • librerie per i protocolli usati (es. SOAP) • tool per la generazione di codice Java a partire da WSDL ✦ Esistono diversi ambienti per la realizzazione di WS in Java • Apache Axis/Axis2 • JBoss WS (RedHat) • Glassfish Metro (Sun) 3
  • 4. I tool necessari ✦ I diversi ambienti non sono (completamente) compatibili tra loro a livello di codice sorgente ✦ I server e i client sono però interoperabili (anche con client/server scritti in altri linguaggi) 4
  • 5. Glassfish Metro ✦ Componente dell’application server Glassfish di Sun ✦ Utilizzabile anche con altri application server (es. Tomcat) ✦ Implementa l’API Java API for XML Web Services (JAX-WS), proposta da Sun come standard per i WS in Java 5
  • 6. Glassfish Metro ✦ Download: • https://metro.dev.java.net/ ✦ Installazione: • dopo aver scaricato il file .jar, l’ambiente viene scompattato con il comando: ‣ java -jar metro-1_5.jar • per l’installazione su Tomcat è necessario il tool Ant; dopo aver scompattato l’ambiente occorre usare il comando: ‣ ant -Dtomcat.home=<TOMCAT_DIR> -f metro-on- tomcat.xml install 6
  • 7. Realizzazione del server ✦ Approccio Java-first • si parte dalla realizzazione di una classe Java che implementa il web service ✦ Approccio WSDL-first • si parte dalla creazione di un file WSDL che descrive il web service 7
  • 8. Realizzazione del server ✦ Java-first • più semplice • richiede che chi definisce la specifica del servizio conosca Java ✦ WSDL-first • consente la definizione del servizio a un progettista che non sia anche uno sviluppatore • il WSDL può essere ottenuto da una descrizione di livello più alto (es. UML) • richiede tool per la creazione del WSDL ✦ seguiremo l’approccio Java-first 8
  • 9. Definizione del servizio ✦ Usando l’API JAX-WS, la definizione del servizio è semplicemente una classe con alcune annotazioni • le annotazioni sono un’estensione del linguaggio Java introdotta nella vers. 1.5 • le annotazioni JAX-WS forniscono dei metadati sulla classe e sui suoi metodi per precisare il comportamento del web service • l’unica annotazione obbligatoria è @WebService, che indica che una classe implementa un WS 9
  • 10. Definizione del servizio ✦ Esempio: la calcolatrice package esempio.server; import javax.jws.*; @WebService public class Calculator { public double add(double a, double b) { return a+b; } public double subtract(double a, double b) { return a-b; } public double multiply(double a, double b) { return a*b; } public double divide(double a, double b) { return a/b; } } 10
  • 11. Definizione del servizio ✦ Note • le annotazioni JAX-WS sono nel package javax.jws • è opportuno che la classe sia inserita in un package; il nome del package viene usato per definire il namespace del servizio ‣ il namespace è un URL usato da SOAP per evitare conflitti di naming tra servizi realizzati da organizzazioni diverse ‣ il package viene trasformato in un namespace invertendo i componenti del suo nome: - esempio.server => http://server.esempio ‣ perciò in un contesto reale il package dovrebbe essere univoco, ad esempio contenendo il nome DNS dell’azienda - ad esempio: it.unisa.esempio.server 11
  • 12. Deployment ✦ Una volta creata e compilata la classe, occorre realizzare una web application da installare sotto Tomcat per offrire il servizio ✦ La struttura è quella classica, con l’aggiunta di un file di configurazione • WEB-INF/ ‣ web.xml ‣ sun-jaxws.xml ‣ classes/ (qui vanno i file compilati) ‣ ... 12
  • 13. Deployment ✦ Nel file web.xml occorre configurare una servlet che gestisca i WS: <?xml version="1.0" encoding="UTF-8"?> <web-app> <description>Calculator</description> <display-name>Calculator Web Service</display-name> <listener> <listener-class> com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class> </listener> <servlet> <servlet-name>Calculator</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Calculator</servlet-name> <url-pattern>/calculator</url-pattern> </servlet-mapping> 13 </web-app>
  • 14. Deployment ✦ Nel file sun-jaxws.xml occorre specificare le classi che implementano i WS: <?xml version="1.0" encoding="UTF-8"?> <endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> <endpoint name="Calculator" implementation="esempio.server.Calculator" url-pattern="/calculator"/> </endpoints> ✦ Nota: l’url-pattern è relativo alla url dell’applicazione web 14
  • 15. Deployment ✦ La cartella di deployment va come al solito inserita nella cartella webapps di tomcat ✦ Per verificare se il deployment ha avuto successo, possiamo accedere al WSDL generato automaticamente aggiungendo ?wsdl all’URL del web service: • Ad esempio, se la web application è stata denominata metrocalc, l’url del WSDL è: ‣ http://localhost:8080/metrocalc/calculator?wsdl 15
  • 16. Realizzazione del client ✦ Il punto di partenza è il WSDL ✦ Occorre generare uno stub per interfacciare il client al WSDL ✦ L’ambiente Metro mette a disposizione il comando wsimport per generare lo stub: • wsimport -keep -p package url-wsdl ‣ l’opzione -keep indica di conservare i sorgenti ‣ l’opzione -p consente di specificare il package in cui inserire le classi generate 16
  • 17. Realizzazione del client ✦ Esempio: • wsimport -keep -p esempio.stub ”http://localhost: 8080/metrocalc/calculator?wsdl” • crea una serie di file nel package esempio.stub, che possono essere importati sotto Eclipse 17
  • 18. Realizzazione del client ✦ Tra le classi create da wsimport, ce ne sono due di interesse dello sviluppatore: • una classe che rappresenta il web service nel suo insieme • una classe che rappresenta un “end point”, ovvero un singolo punto di accesso al web service (un web service può avere più endpoints) • il nome di queste classi dipende dal WSDL, quindi occorre esaminare i file prodotti da wsimport per capire come sono state denominate ‣ nel nostro caso, CalculatorService e Calculator 18
  • 19. Realizzazione del client ✦ Usando le classi del service e dell’endpoint si può usare il web service come un normale oggetto: package esempio.client; import esempio.stub.*; public class Client { public static void main(String args[]) { Calculator calc=new CalculatorService().getPort(Calculator.class); System.out.println("9 per 9 fa "+calc.multiply(9,9)); } } 19