30
XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII Olivier Flauzac (URCA) XML RPC CMSII 1 / 30

XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPCTechnologie de le programmation

Olivier Flauzac

URCA

LPRO CMSII

Olivier Flauzac (URCA) XML RPC CMSII 1 / 30

Page 2: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

1 Introduction

2 Requetes et reponses

3 Mapping

4 XML RPC et java

5 Caracteristique et specificites

Olivier Flauzac (URCA) XML RPC CMSII 2 / 30

Page 3: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Introduction

Plan

1 Introduction

2 Requetes et reponses

3 Mapping

4 XML RPC et java

5 Caracteristique et specificites

Olivier Flauzac (URCA) XML RPC CMSII 3 / 30

Page 4: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Introduction

Executions distantes

Appel de procedures a distance (RPC)

Sun RPC

RMI

Corba

DCOM ORPC

Limites des solutions

coherence des donnees

coherence des langages

lourdeur des solutions

securite

Olivier Flauzac (URCA) XML RPC CMSII 4 / 30

Page 5: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Introduction

XML-RPC

Motivation

gestion des executions distantes

gestion de l’heterogeneite

systemelangageserveur

gestion de la securite

Solution proposee

protocole HTTP

transport : methode POST

encodage XML

HTTP/SSL pour la securite

Olivier Flauzac (URCA) XML RPC CMSII 5 / 30

Page 6: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Introduction

Implemantations

Langages

C

C++

ObjectiveC

Delphi/Kylix

Java

Perl

PHP

Python

TCL

Ruby

Rebol

Scheme

Lisp

Lingo

AppleScript

JavaScript

ASP

Cold Fusion

WebObjects

Flash

Zope

Olivier Flauzac (URCA) XML RPC CMSII 6 / 30

Page 7: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Requetes et reponses

Plan

1 Introduction

2 Requetes et reponses

3 Mapping

4 XML RPC et java

5 Caracteristique et specificites

Olivier Flauzac (URCA) XML RPC CMSII 7 / 30

Page 8: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Requetes et reponses

Requete XML-RPC

POST /RPC2 HTTP/ 1 . 0User−Agent : F r o n t i e r / 5 . 1 . 2 (WinNT)H o s t : b e t t y . u s e r l a n d . comContent−Type: t e x t / xmlContent− l e n g t h : 181

<?xml ver s ion=” 1 . 0 ”?><methodCa l l>

<methodName>examples . getStateName</methodName><params>

<param><v a l u e>< i 4>41</ i 4></ v a l u e>

</param></ params>

</ methodCa l l>

Olivier Flauzac (URCA) XML RPC CMSII 8 / 30

Page 9: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Requetes et reponses

Reponse

HTTP/ 1 . 1 200 OKC o n n e c t i o n : c l o s eContent−L e n g t h : 158Content−Type: t e x t / xmlDate : F r i , 17 J u l 1998 19 : 5 5 : 0 8 GMTS e r v e r : UserLand F r o n t i e r /5.1.2−WinNT

<?xml ver s ion=” 1 . 0 ”?><methodResponse>

<params><param>

<v a l u e>< s t r i n g>South Dakota</ s t r i n g></ v a l u e></param>

</ params></ methodResponse>

Olivier Flauzac (URCA) XML RPC CMSII 9 / 30

Page 10: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Requetes et reponses

Reponse avec erreur

HTTP/ 1 . 1 200 OKC o n n e c t i o n : c l o s eContent−L e n g t h : 426Content−Type: t e x t / xmlDa te : F r i , 17 J u l 1998 19 : 5 5 : 0 2 GMTS e r v e r : UserLand F r o n t i e r /5.1.2−WinNT

<?xml v e r s i o n=” 1 . 0 ”?><methodResponse>

< f a u l t><v a l u e>

<s t r u c t><member>

<name>f a u l t C o d e</name><v a l u e>< i n t>4</ i n t></ v a l u e>

</member>

Olivier Flauzac (URCA) XML RPC CMSII 10 / 30

Page 11: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Requetes et reponses

<member><name> f a u l t S t r i n g</name><v a l u e>< s t r i n g>Too many p a r a m e t e r s .</ s t r i n g> </ v a l u e>

</member></ s t r u c t>

</ v a l u e></ f a u l t>

</ methodResponse>

Olivier Flauzac (URCA) XML RPC CMSII 11 / 30

Page 12: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Mapping

Plan

1 Introduction

2 Requetes et reponses

3 Mapping

4 XML RPC et java

5 Caracteristique et specificites

Olivier Flauzac (URCA) XML RPC CMSII 12 / 30

Page 13: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Mapping

Types de donnees

Donnees et formats

type donnee representee

<int> <i4> entier 32 bits signes

<string> chaıne de caracteres ASCII

<boolean> booleen

<double> virgule flotante double precision

<dateTime.iso8601> date et heure

<base64> flux binaire

<array> tableaux

<struct> structure complexes

par defaut string

Olivier Flauzac (URCA) XML RPC CMSII 13 / 30

Page 14: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Mapping

Types de donnees : Exemple 1

Structures

<s t r u c t><member>

<name>lowerBound</name><v a l u e>< i 4>18</ i 4></ v a l u e>

</member><member>

<name>upperBound</name><v a l u e>< i 4>139</ i 4></ v a l u e>

</member></ s t r u c t>

Olivier Flauzac (URCA) XML RPC CMSII 14 / 30

Page 15: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Mapping

Types de donnees : Exemple 2

Tableaux

<a r r a y><data>

<v a l u e>< i 4>12</ i 4></ v a l u e><v a l u e>< s t r i n g>Egypt</ s t r i n g></ v a l u e><v a l u e><b o o l e a n>0</ b o o l e a n></ v a l u e><v a l u e>< i 4>−31</ i 4></ v a l u e>

</ data></ a r r a y>

Olivier Flauzac (URCA) XML RPC CMSII 15 / 30

Page 16: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

Plan

1 Introduction

2 Requetes et reponses

3 Mapping

4 XML RPC et java

5 Caracteristique et specificites

Olivier Flauzac (URCA) XML RPC CMSII 16 / 30

Page 17: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

Implementation en Java

Bibliotheques

plusieurs implementations

utilisation de l’implementation Apache

version 2version 3

http://ws.apache.org/implementation client

org.apache.xmlrpc.XmlRpcClient : utilisation dejava.net.URLConnection

org.apache.xmlrpc.XmlRpcClientLite : protocole HTTP legergestion des appels synchronesgestion des appels asynchrones

implementation serveur

modulestandalone serveur

Olivier Flauzac (URCA) XML RPC CMSII 17 / 30

Page 18: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

Mapping

type XML-RPC Type genere Type manipule

<i4> ou <int> java.lang.Integer int

<boolean> java.lang.Boolean boolean

<string> java.lang.String java.lang.String

<double> java.lang.Double double

<dateTime.iso8601> java.util.Date java.util.Date

<struct> java.util.Hashtable java.util.Hashtable

<array> java.util.Vector java.util.Vector

<base64> byte[ ] byte[ ]

Olivier Flauzac (URCA) XML RPC CMSII 18 / 30

Page 19: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

API cote client

Constructeur

XmlRpcCl ient ( j a v a . l a n g . S t r i n g hostname , i n t p o r t )XmlRpcCl ient ( j a v a . n et . URL u r l )

Execution

j a v a . l a n g . Object e x e c u t e ( j a v a . l a n g . S t r i n g method ,j a v a . u t i l . V e c t o r params )

void e x e c u t e A s y n c ( j a v a . l a n g . S t r i n g method ,j a v a . u t i l . V e c t o r params ,A s y n c C a l l b a c k c a l l b a c k )

Recuperation de l’URL

j a v a . n et . URL getURL ( )

Olivier Flauzac (URCA) XML RPC CMSII 19 / 30

Page 20: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

API cote serveur

Le serveur

classe : org.apache.xmlrpc.WebServer

constructeur

WebServer ( i n t p o r t )

Methodes

enregistrement des services

vo id addHandler ( j a v a . l a n g . S t r i n g name , j a v a . l a n g . Object t a r g e t )

mise en place

vo id s t a r t ( )

gestion des acces

vo id s e t P a r a n o i d ( boolean p )vo id a c c e p t C l i e n t ( j a v a . l a n g . S t r i n g a d d r e s s )vo id d e n y C l i e n t ( j a v a . l a n g . S t r i n g a d d r e s s )

Olivier Flauzac (URCA) XML RPC CMSII 20 / 30

Page 21: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

Exemple

Serveur

import org . apache . xml rpc . ∗ ;

pub l i c c l a s s S e r v e r S i m p l e {pub l i c S e r v e r S i m p l e ( ) {}pub l i c S t r i n g b o n j o u r ( S t r i n g s ) {

S t r i n g r e s u l t = new S t r i n g ( ” Bonjour ” + s ) ;return r e s u l t ;

}}

Olivier Flauzac (URCA) XML RPC CMSII 21 / 30

Page 22: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

Mise en service

import org . apache . xml rpc . ∗ ;

pub l i c c l a s s S t a r t S e r v {pub l i c s t a t i c void main ( S t r i n g [ ] a r g s ) {

t ry {

WebServer s e r v e r = new WebServer ( 8 0 8 0 ) ;s e r v e r . addHandler ( ” t e s t ” , new S e r v e r S i m p l e ( ) ) ;s e r v e r . s t a r t ( ) ;

} catch ( E x c e p t i o n e x c e p t i o n ) {System . e r r . p r i n t l n ( ” J a v a S e r v e r : ” +

e x c e p t i o n . t o S t r i n g ( ) ) ;}

}}

Olivier Flauzac (URCA) XML RPC CMSII 22 / 30

Page 23: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

XML RPC et java

Un client

import j a v a . u t i l . V e c t o r ;import org . apache . xml rpc . ∗ ;import j a v a . u t i l . ∗ ;

pub l i c c l a s s C l i e n t S i m p l e {p r i v a t e f i n a l s t a t i c S t r i n g s e r v e r U r l =

” h t t p : / / l o c a l h o s t :8080/RPC2” ;pub l i c s t a t i c vo id main ( S t r i n g [ ] a r g s ) {

t r y {XmlRpcCl ient t o S e r v e r = new XmlRpcCl ient ( s e r v e r U r l ) ;V e c t o r params = new V e c t o r ( ) ;params . addElement (new S t r i n g ( ” O l i v i e r ” ) ) ;S t r i n g r e s u l t =

( S t r i n g ) t o S e r v e r . e x e c u t e ( ” t e s t . b o n j o u r ” , params ) ;System . out . p r i n t l n ( r e s u l t ) ;

} catch ( XmlRpcExcept ion e x c e p t i o n ) {System . e r r . p r i n t l n ( ” J a v a C l i e n t : XML−RPC F a u l t #” +

I n t e g e r . t o S t r i n g ( e x c e p t i o n . code ) + ” : ” +e x c e p t i o n . t o S t r i n g ( ) ) ;

} catch ( E x c e p t i o n e x c e p t i o n ) {System . e r r . p r i n t l n ( ” J a v a C l i e n t : ” + e x c e p t i o n . t o S t r i n g ( ) ) ;

}}

}Olivier Flauzac (URCA) XML RPC CMSII 23 / 30

Page 24: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Plan

1 Introduction

2 Requetes et reponses

3 Mapping

4 XML RPC et java

5 Caracteristique et specificites

Olivier Flauzac (URCA) XML RPC CMSII 24 / 30

Page 25: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Persistance des donnees du serveur

Persistance

utilisation de la persistance des objets

import org . apache . xml rpc . ∗ ;

pub l i c c l a s s S e r v e r P e r s i s t {pr i va te i n t i ;pub l i c S e r v e r P e r s i s t ( ) {

i = 0 ;}pub l i c i n t v a l I ( ) {

i ++;return i ;

}}

Olivier Flauzac (URCA) XML RPC CMSII 25 / 30

Page 26: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Transmission d’objets en Java

Transmission

transmission des etats serialises des objets

utilisation du type base64

utilisation des classe Java :

java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.ObjectOutputStreamjava.io.ObjectInputStream

perte de la compatibilite translangage ! ! !

Olivier Flauzac (URCA) XML RPC CMSII 26 / 30

Page 27: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Le serveur

import org . apache . xml rpc . ∗ ;import j a v a . i o . ∗ ;

pub l i c c l a s s S e r v S e r {pub l i c S e r v S e r ( ) {}pub l i c byte [ ] s e r i a ( ) {

Pers p = new Pers ( ” t o t o ” , ” t i t i ” ) ;byte [ ] r e s = n u l l ;t r y {

ByteArrayOutputStream o = new ByteArrayOutputStream ( ) ;ObjectOutputStream out = new ObjectOutputStream ( o ) ;out . w r i t e O b j e c t ( p ) ;out . f l u s h ( ) ;r e s = o . t o B y t e A r r a y ( ) ;

} catch ( E x c e p t i o n e ){System . out . p r i n t l n ( ” E r r e u r s u r l e s e r v e u r ” ) ;

}r e t u r n r e s ;

}}

Olivier Flauzac (URCA) XML RPC CMSII 27 / 30

Page 28: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Le client

import org . apache . xml rpc . ∗ ;import j a v a . u t i l . ∗ ;import j a v a . i o . ∗ ;pub l i c c l a s s C l i S e r v {

p r i v a t e f i n a l s t a t i c S t r i n g s e r v e r U r l =” h t t p : / / l o c a l h o s t :8080/RPC2” ;

pub l i c s t a t i c vo id main ( S t r i n g [ ] a r g s ) {t r y {

XmlRpcCl ient t o S e r v e r = new XmlRpcCl ient ( s e r v e r U r l ) ;V e c t o r params = new V e c t o r ( ) ;byte [ ] r e s u l t = ( byte [ ] )

t o S e r v e r . e x e c u t e ( ” t e s t 3 . s e r i a ” , params ) ;B y t e A r r a y I n p u t S t r e a m i = new B y t e A r r a y I n p u t S t r e a m ( r e s u l t ) ;O b j e c t I n p u t S t r e a m i n = new O b j e c t I n p u t S t r e a m ( i ) ;Pers p = ( Pers ) i n . r e a d O b j e c t ( ) ;System . out . p r i n t l n ( p ) ;

} catch ( XmlRpcExcept ion e x c e p t i o n ) {System . e r r . p r i n t l n ( ” J a v a C l i e n t : XML−RPC F a u l t #” +

I n t e g e r . t o S t r i n g ( e x c e p t i o n . code ) + ” : ” + e x c e p t i o n ) ;} catch ( E x c e p t i o n e ) {

System . e r r . p r i n t l n ( ” J a v a C l i e n t : ” + e ) ; }}

}

Olivier Flauzac (URCA) XML RPC CMSII 28 / 30

Page 29: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Exemple de service accessible

Date et Heure

service libre et gratuit

time.xmlrpc.com

port : 80

path : /RPC2

methode : currentTime.getCurrentTime

Olivier Flauzac (URCA) XML RPC CMSII 29 / 30

Page 30: XML RPC - Technologie de le programmationcosy.univ-reims.fr/~lsteffenel/cours/LPro/CliServer/xmlrpc.pdf · XML RPC Technologie de le programmation Olivier Flauzac URCA LPRO CMSII

Caracteristique et specificites

Le client

import org . apache . xml rpc . ∗ ;import j a v a . u t i l . ∗ ;pub l i c c l a s s C l i e n t T i m e {

p r i v a t e f i n a l s t a t i c S t r i n g s e r v e r U r l =” h t t p : / / t ime . xmlrpc . com : 8 0 / RPC2” ;

pub l i c s t a t i c vo id main ( S t r i n g [ ] a r g s ) {t r y {

XmlRpcCl ient t o S e r v e r = new XmlRpcCl ient ( s e r v e r U r l ) ;V e c t o r params = new V e c t o r ( ) ;Object r e s u l t = t o S e r v e r . e x e c u t e ( ” c u r r e n t T i m e . getCur rentT ime ” ,

params ) ;System . out . p r i n t l n ( r e s u l t ) ;

} catch ( E x c e p t i o n e x c e p t i o n ) {System . e r r . p r i n t l n ( ” J a v a C l i e n t : ” + e x c e p t i o n . t o S t r i n g ( ) ) ;

}}

}

Olivier Flauzac (URCA) XML RPC CMSII 30 / 30