SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

A detailed Tibco EMS presentation
A detailed Tibco EMS presentationA detailed Tibco EMS presentation
A detailed Tibco EMS presentationCblsolutions.com
 
SAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID ConnectSAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID ConnectUbisecure
 
REST APIs and MQ
REST APIs and MQREST APIs and MQ
REST APIs and MQMatt Leming
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT ExploitationAkshaeyBhosale
 
Important tips on Router and SMTP mail routing
Important tips on Router and SMTP mail routingImportant tips on Router and SMTP mail routing
Important tips on Router and SMTP mail routingjayeshpar2006
 
Whats new in data power
Whats new in data powerWhats new in data power
Whats new in data powersflynn073
 
Active Directory Single Sign-On with IBM
Active Directory Single Sign-On with IBMActive Directory Single Sign-On with IBM
Active Directory Single Sign-On with IBMVan Staub, MBA
 
Siebel Web Architecture
Siebel Web ArchitectureSiebel Web Architecture
Siebel Web ArchitectureRoman Agaev
 
Group policy Best Practices
Group policy Best PracticesGroup policy Best Practices
Group policy Best PracticesRob Dunn
 
SOA Pattern Event Driven Messaging
SOA Pattern Event Driven MessagingSOA Pattern Event Driven Messaging
SOA Pattern Event Driven MessagingWSO2
 

La actualidad más candente (18)

Introduction to SAML & OIDC
Introduction to SAML & OIDCIntroduction to SAML & OIDC
Introduction to SAML & OIDC
 
A detailed Tibco EMS presentation
A detailed Tibco EMS presentationA detailed Tibco EMS presentation
A detailed Tibco EMS presentation
 
DNS Security
DNS SecurityDNS Security
DNS Security
 
Oracle API Gateway Installation
Oracle API Gateway InstallationOracle API Gateway Installation
Oracle API Gateway Installation
 
SAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID ConnectSAML VS OAuth 2.0 VS OpenID Connect
SAML VS OAuth 2.0 VS OpenID Connect
 
REST APIs and MQ
REST APIs and MQREST APIs and MQ
REST APIs and MQ
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT Exploitation
 
Important tips on Router and SMTP mail routing
Important tips on Router and SMTP mail routingImportant tips on Router and SMTP mail routing
Important tips on Router and SMTP mail routing
 
Dhcp presentation
Dhcp presentationDhcp presentation
Dhcp presentation
 
Whats new in data power
Whats new in data powerWhats new in data power
Whats new in data power
 
Spnego configuration
Spnego configurationSpnego configuration
Spnego configuration
 
Active Directory Single Sign-On with IBM
Active Directory Single Sign-On with IBMActive Directory Single Sign-On with IBM
Active Directory Single Sign-On with IBM
 
LDAP
LDAPLDAP
LDAP
 
Siebel Web Architecture
Siebel Web ArchitectureSiebel Web Architecture
Siebel Web Architecture
 
Group policy Best Practices
Group policy Best PracticesGroup policy Best Practices
Group policy Best Practices
 
Domain name system
Domain name systemDomain name system
Domain name system
 
CPanel User Guide
CPanel User GuideCPanel User Guide
CPanel User Guide
 
SOA Pattern Event Driven Messaging
SOA Pattern Event Driven MessagingSOA Pattern Event Driven Messaging
SOA Pattern Event Driven Messaging
 

Destacado

Destacado (6)

[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
 
Corso Java 2 - AVANZATO
Corso Java 2 - AVANZATOCorso Java 2 - AVANZATO
Corso Java 2 - AVANZATO
 
Lezione 8: Introduzione ai Web Service
Lezione 8: Introduzione ai Web ServiceLezione 8: Introduzione ai Web Service
Lezione 8: Introduzione ai Web Service
 
Corso Java 3 - WEB
Corso Java 3 - WEBCorso Java 3 - WEB
Corso Java 3 - WEB
 
Corso web services
Corso web servicesCorso web services
Corso web services
 
Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 

Similar a 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
 

Similar a 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
 

Más 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 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaAndrea 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
 

Más 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 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in Java
 
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
 

Último

Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxteccarellilorenzo
 
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
 
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
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxsasaselvatico
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxlorenzodemidio01
 
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
 
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
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxteccarellilorenzo
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfteccarellilorenzo
 

Último (17)

Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
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
 
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.....
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.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
 
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...
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdf
 

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