PRACTICAL DEVELOPMENT OF A WEB SERVICE



Похожие документы
Spring WS Sviluppare WebService in Java

Programmazione server-side: Java Servlet

Java Web Services. Uso di Eclipse e Apache Axis

RMI Remote Method Invocation

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3

DOCFINDERWEB SERVICE E CLIENT

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

Web Service Architecture

Introduzione ai Web Services Alberto Polzonetti

Lezione 1 Introduzione

Il Web-Service SDMX dell ISTAT

ProgettAzione V anno Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

Maxpho Commerce 11. Application Program Interface - API Instant Notifcation Service - INS. Data : 20 / 09 / 2011 Versione : 1.2 Autore: Maxpho Srl

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

Plus srl :: :: :: Via Morgagni, 4/A Verona :: Tel :: Fax

Seminario di Sistemi Distribuiti RPC su SOAP

Laboratorio di Basi di Dati

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Integration Software S.r.l.

WEB SERVICES SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

Il Web-Service SDMX dell ISTAT

Programmazione di sistemi distribuiti

Programmazione a Oggetti Modulo B

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005

Programmazione dei socket con TCP #2

JAX-WS. Java API for XML Web Services. Massimo Martinelli

Lezione 9. Applicazioni tradizionali

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Progettazione e Implementazione di API WebSocket per il Gateway Dog

I Servizi dell'architettura Web Services. Tito Flagella Lorenzo Nardi

Registratori di Cassa

MONITORAGGIO UNITARIO PROGETTI 2007/2013 PROTOCOLLO DI COLLOQUI ANALISI ATTIVAZIONE SERVIZIO IGRUE IN SPCOOP. Link.it srl - Analisi Servizio IGRUE 1

WEB SERVICES SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE PROVA

Integrazione InfiniteCRM - MailUp

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

Socket & RMI Ingegneria del Software - San Pietro

Web Service SOAP e WSDL. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Servlet API. Programmazione in Ambienti Distribuiti A.A

Certificazione di Proxy Applicativi e di applicazioni e servizi di cooperazione di Sistemi Informativi Locali

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Progettazione: Tecnologie e ambienti di sviluppo

Client e Server comunicano tramite il protocollo SOAP.

Telematica II 17. Esercitazione/Laboratorio 6

Real Time Control (RTC): modalità di invio dei dati

Il Registro dei Servizi di OpenSPCoop i. Il Registro dei Servizi di OpenSPCoop

CMDBuild: un progetto open source di supporto alla gestione ICT (e non solo) Approfondimenti Tecnici. Francesco Zanitti Tecnoteca S.r.

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Oggetti Lezione 3. aspetti generali e definizione di classi I

Interfaccia SOAP del FUSC. Versione 3.10

Java SOAP Client. Manuale per l installazione. WebEDI Scambio elettronico documenti. ManualeInstallazioneSoapCli ent

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Web Services Dogane LINEE GUIDA

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Portale regionale della Salute. Servizi di prenotazione prestazione e pagamento ticket.

Ingegneria del Software. Presentazione del pattern Proxy

Progettazione : Design Pattern Creazionali

Strumenti per la programmazione

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Introduzione alle applicazioni di rete

Distributed Training Facility

Configurazione avanzata di IBM SPSS Modeler Entity Analytics

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

appunti delle lezioni Architetture client/server: applicazioni client

Casi di studio sulla migrazione di applicazioni web verso servizi REST Anno Accademico 2008/2009

Realizzazione di una classe con un associazione

CORBA ( Common Object Request Broker Architecture ) Le specifiche più conosciute sono UML e CORBA

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

1 EJB e Portal Component Object

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Il linguaggio Java. Concetti base. I packages

ESEMPI INTEGRAZIONE PRODOTTI

JUG Ancona Italy. Google Web Toolkit. Giovanni Baleani Programmatore Java. Filippetti S.r.l.

Ministero della Giustizia

Corso Sviluppatore servizi per il Web (WCF) Lezione 01

ISTRUZIONI PER IL SERVIZIO SPCOOP - RICEZIONE

Elementi di UML (7): Diagrammi dei componenti e di deployment

Licenza per sito Manuale dell amministratore

Gestione Richieste Patenti Web

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

DISCIPLINARE TECNICO Modalità tecniche per la predisposizione e l invio telematico dei dati delle certificazioni di malattia all INPS

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Tale attività non è descritta in questa dispensa

Транскрипт:

PRACTICAL DEVELOPMENT OF A WEB SERVICE 1

JAX-WS 2.0 Java API for XML Web Services Specifica basata su annotazioni Applicata su classi ed interfacce in modo da definire e gestire automaticamente il protocollo di comunicazione remota SOAP il marshalling XML lo scambio di messaggi previsto WSDL / XML-Schema Condiziona anche la codifica client (se Java) Alternativa a JAX-RPC (Java API for XML Remote Procedure Calls) basata su file di mapping e descrittori XML 2

Premesse ed osservazioni Il file WSDL verrà automaticamente generato dal framework JBossWS Non è previsto il mantenimento di alcuno stato conversazionale!! I Web Service, per propria natura, sono stateless La realizzazione di Web Service conversazionali è ottenibile tramite estensioni dello standard WS-Addressing Occorre ricordare che i Web Service sono creati per essere platform-independent Moduli client e server possono essere codificati in linguaggi differenti Non è richiesta alcuna importazione di file bytecode nel client che siano residenti nel server 3

Implementazione basata su POJO/Servlet 1. Creare un'interfaccia che dichiari le operazioni offerte dal Web Service package it.uniroma1.dis.pseudoinfostud.control; public interface ElencoUtentiAttiviService { } public String[] getelencoutentiattivi(); 4

Implementazione basata su POJO/Servlet 2. Dichiarare, per mezzo di annotazioni, le caratteristiche del Web Service package it.uniroma1.dis.pseudoinfostud.control; import javax.jws.webmethod; import javax.jws.webresult; import javax.jws.webservice; @WebService(targetNamespace = "http://www.dis.uniroma1.it/master/pseudoinfostud/elencoutenti") public interface ElencoUtentiAttiviService { @WebMethod(operationName="getElencoUtentiAttivi") @WebResult(name="elencoUtentiAttivi") public String[] getelencoutentiattivi(); } 5

Implementazione basata su POJO/Servlet 3. Codificare una classe che implementi quei metodi (endpoint) package it.uniroma1.dis.pseudoinfostud.control; public class ElencoUtentiAttiviEndpoint implements ElencoUtentiAttiviService { @Override public String[] getelencoutentiattivi() { List<String> utentiattivi = new ArrayList<String>();... return utentiattivi.toarray(); } } 6

Implementazione basata su POJO/Servlet 4. Dichiarare, per mezzo di annotazioni, le caratteristiche dell'endpoint package it.uniroma1.dis.pseudoinfostud.control; import javax.jws.webservice; @WebService( name = "ElencoUtentiAttiviEndpoint", servicename = "ElencoUtentiAttivi", targetnamespace = "http://www.dis.uniroma1.it/asos/pseudoinfostud/elencoutenti", endpointinterface = "it.uniroma1.dis.pseudoinfostud.control.elencoutentiattiviservice") public class ElencoUtentiAttiviEndpoint implements ElencoUtentiAttiviService { public String[] getelencoutentiattivi() { //... } } 7

Implementazione basata su POJO/Servlet 5. Impostare, su web.xml, i riferimenti remoti verso l'endpoint <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="webapp_id" version="2.5"> <display-name>pseudoinfostudwsserver</display-name> <servlet> <display-name>elencoutentiattiviendpoint</display-name> <servlet-name>elencoutentiattiviendpoint</servlet-name> <servlet-class> it.uniroma1.dis.pseudoinfostud.control.elencoutentiattiviendpoint </servlet-class> </servlet> <servlet-mapping> <servlet-name>elencoutentiattiviendpoint</servlet-name> <url-pattern>/elencoutentiattivi</url-pattern> </servlet-mapping> </web-app> 8

Implementazione basata su POJO/Servlet 6. Dispiegare sull'application Server il WAR contenente bytecode e metadati creati 9

Implementazione basata su POJO/Servlet JAX-WS 10

Osservazioni POJO / Servlet Sebbene si compili un'applicazione web basata su Servlet, la classe che implementa il Web Service non deve dichiarare esplicitamente l'estensione della classe javax.servlet.genericservlet L'implementazione è estremamente semplice Qualunque classe può divenire l'endpoint di un Web Service, una volta apposte opportunamente le annotazioni 11

Il client Non è necessario che il client sia codificato in Java Esula dagli scopi di questo corso l'integrazione con altre tecnologie...... dunque nel resto della lezione considereremo la codifica in Java! Occorre ricordare che non solo i valori e le istanze, ma anche la definizione degli stessi, sono basati su XML WSDL contiene tutte le informazioni, con riferimenti a XML-Schema interni o esterni Nel progetto client, anche se codificato in Java, non si devono importare direttamente le classi definite sul server! L'esperienza insegna che, provando, si ottengono a run-time errori alquanto criptici... com.sun.xml.ws.model.runtimemodelerexception: runtime modeler error: Wrapper class bla.bla.bla.bla is not found. Have you run APT to generate them? 12

Gli stub Occorre generare gli stub delle classi presenti sul server Gli stub devono essere prodotti sulla base del solo WSDL Il comando per ottenere da shell (prompt) la codifica e la compilazione di tali stub è wsimport Esempio d'uso wsimport -d directory_destinazione_file_compilati -s directory_destinazione_file_sorgente_generati -keep -p package_classi_stub uri_wsdl 13

Gli stub Occorre generare gli stub delle classi presenti sul server Gli stub devono essere prodotti sulla base del solo WSDL Il comando per ottenere da shell (prompt) la codifica e la compilazione di tali stub è wsimport Caso reale wsimport -d /home/mobidis/workspace/simplewsclient/bin -s /home/mobidis/workspace/simplewsclient/src -keep -p stub http://127.0.0.1:8080/elencoutentiattivi/elencoutentiattivi?wsdl 14

Gli stub Le classi di Stub vanno aggiunte al progetto Java del client Il mantenimento dei sorgenti è opzionale...... ma molto utile a scopo didattico Attenzione: sono classi diverse dalla controparte sul server 15

Invocazione di operazioni del WS Dati gli stub (importati nella classe client), per ottenere un riferimento locale all'endpoint (proxy): EndpointInterfaceName endpoint = new ServiceName ().get ServicePortName (); 16

Invocazione di operazioni del WS Su tale classe, potranno essere invocati i metodi dichiarati tramite annotazione @WebService Il nome dei metodi corrisponderà al nome specificato come attributo name dell'annotazione, se presente! 17