Java Par L'exemple : Le serveur - PowerPoint PPT Presentation

About This Presentation
Title:

Java Par L'exemple : Le serveur

Description:

... Common Object Request Broker Architecture ... le serveur et de le rendre disponible sur le bus corba ... r duit Java EJB /RMI Distribution ... – PowerPoint PPT presentation

Number of Views:63
Avg rating:3.0/5.0
Slides: 39
Provided by: LISI61
Category:
Tags: corba | exemple | java | par | serveur

less

Transcript and Presenter's Notes

Title: Java Par L'exemple : Le serveur


1
Les objets distribués
S. Frénot INSA Lyon 1998 stephf_at_lisiflory.insa-lyo
n.fr
2
Objectifs des approches distribuéesVue
macroscopique
  • Développer des applications dont les services
    sont répartis sur plusieurs machines
    interconnectées par un réseau
  • Contraintes
  • Développement similaire à une approche
    centralisée
  • Moyens masquer les "détails"
  • "Détails" du réseau gt On ne connaît pas la
    localisation
  • "Détails" des langages utilisés gt On ne connaît
    pas l'implantation

3
Quelques architectures
  • OSF (Open Software Foundation)
  • Distributed Computing Environnement
  • Microsoft
  • Distributed Component Object Model
  • OMG (Object Management Group)
  • Common Object Request Broker Architecture (CORBA)
  • Sun
  • EJB (Enterprise Java Beans)

4
CORBA
  • Fondé sur le modèle client/serveur s'échangeant
    des valeurs
  • Une architecture
  • OMA Object Management Architecture
  • Un langage de description des services offerts
  • IDL Interface Definition Language
  • Un modèle d'échange d'informations
  • Valeurs atomiques, Valeurs Contruites et
    Références d'objet
  • Mais surtout une spécification papier de l'ORB et
    des services

5
Problématique Vue microscopique
Service ?
Etat ?
Objet client
Objet serveur
Espace 2
Espace 1
  • Service gt appel des méthodes
  • Etat gt accès aux attributs

6
Principe des échanges
Espace 2
Espace 1
Objet client
Objet serveur
  • Fournir des objets de service qui vont servir
    d'intermédiaires pour le client et le serveur

7
Fonctionnement
Serveur
Client
Système Intermédiaire Client
Système Intermédiaire Serveur
Espace 2
Espace 1
8
Fonctionnement lancement
Le client peut invoquer les méthodes du service
Client
ORB Serveur
ORB Client
Espace 2
Espace 1
9
Développement
  • Définition de l'interface IDL du composant (objet
    serveur)
  • mandataires client (client stubs)
  • mandataires serveurs (serveur skeleton)
  • Développement du serveur qui implante les
    services
  • Développement d'un lanceur capable d'instancier
    le serveur et de le rendre disponible sur le bus
    corba (création du skeleton)
  • Inscription du lanceur sur le bus(ajout dans le
    référentiel)
  • -------------------------
  • Insertion dans le client des appels au serveur
    (connexion sur le serveur via le stub et
    invocation des méthodes distantes)

10
Un exemple
  • Un composant Requête sur une base de données
  • Le composant maintient une connexion sur une base
  • Il contient une méthode d'invocation
  • Chaine executerRequete (Chaine commandeSQL)

11
OMG-IDL Définition
  • Langage de spécification des interfaces
  • Orienté Objet
  • Opérations et Attributs
  • Héritage simple et multiple
  • Exceptions
  • Conçu pour être mappé sur de nombreux langages de
    programmation
  • Java, C, C , Smalltalk, Ada, Cobol, Modula3
  • OMG-IDL ltgt Interfaces Java, Classes
    Abstraites du C

12
? IDL
  • typedef sequenceltstringgt tableaux_resultat
  • interface REQUETE
  • tableaux_resultat executer_req_array(in string
    req)
  • --gt Compilation idl -jPacces_bd requete.idl
    (sous OrbixWeb)
  • Mandataire client REQUETE.java
  • Service client pour demander un proxy
    REQUETEHelper.java
  • Mandataire serveur _tie_REQUETE.java
  • Interface de développement du serveur
    _REQUETEOperations

13
Développement du serveur
  • Garantit que toutes les fonctions sont implantées
  • N'importe quel langage sur lequel est défini un
    mapping
  • ------------- Implante REQUETE_Operations
  • package acces_bd
  • public interface _REQUETEOperations
  • public String executer_req_array(String
    req)

14
? Développement du serveur
  • package acces_bd
  • import java.sql.
  • import java.util.Vector
  • class REQUETEImplementation implements
    _REQUETEOperations
  • Connection connull
  • public REQUETEImplementation()
  • try
  • DriverManager.registerDriver (new
    oracle.jdbc.driver.OracleDriver ())
  • catch (Exception raison1)
  • System.out.println("pb pendant new
    oracle.jdbc.driver.....")
  • try
  • con DriverManager.getConnection
    ("jdbcoraclethin_at_lisiaix0.insa-lyon.fr1526INS
    A", "bcb", "bcb")
  • catch (Exception raison2)
  • System.out.println("pb pendant get connection
    jdbc.....")

15
? Développement du serveur
  • public String executer_req_array(String req)
  • String resultat Vector resultvectornew
    Vector()
  • Statement stmtnull ResultSet rsnull int
    ncols0
  • try // Lancement de la requête
  • stmt con.createStatement()
  • rs stmt.executeQuery(req)
  • ncols rs.getMetaData().getColumnCount()
  • catch (Exception ex) //code d'erreur
  • try
  • while (rs.next)
  • for (int i1 iltncols i)
  • resultvector.addElement(rs.getString(i))
  • catch (Exception ex)
  • resultat new Stringresultvector.size()
  • resultvector.copyInto(resultat)
  • return resultat

16
Développement du lanceur (adapteur d'objet)
  • Enregistre les classes dimplantation des
    serveurs
  • Active / désactive les serveurs
  • Génération / interprétation des références sur
    les objets
  • Plusieurs types en fonction de la nature du
    serveur

17
? Développement du lanceur
  • package acces_bd
  • public class composantserv
  • public static void main (String args )
  • REQUETE REQUETEImplnull //Nom du
    mandataire
  • REQUETEImplementation tmpnull //Nom du
    serveur
  • try
  • tmpnew REQUETEImplementation()
  • REQUETEImpl new _tie_REQUETE(tmp)
  • catch(SystemException se1)
  • try
  • IE.Iona.OrbixWeb._CORBA.Orbix.impl_is_ready("SE
    RVICEREQUETES")
  • catch(SystemException se)

18
? Inscription du lanceur
  • putit -j LAREQUETE acces_bd.composantserv
  • Implantation sur le système de fichiers du
    serveur
  • Annuaire des objets du système distribué
    (Interface Repository)
  • Banque dobjets métiers de lentreprise
  • Accessible à lORB et aux développeurs
  • Possibilité de fédération dIR

19
Liste des services
20
Le fichier de définition
21
Développement du client
  • Se connecte sur le service d'intermédiation
  • Demande l'accès à un service particulier
  • Reçoit une référence sur le mandataire du serveur
  • Peut invoquer des méthodes sur les mandataires
    serveurs pour récupérer des valeurs.
  • Aussi simple que si l'objet serveur est local

22
? Développement du client
  • package acces_bd
  • public class composantcli
  • public static void main(String args)
  • REQUETE myreq null
  • String reponsenew String 0
  • ORB.init() //Initialisation de l'accès à
    l'ORB
  • try
  • myreq REQUETEHelper.bind("LAREQUETE","lisisun1
    .insa-lyon.fr)
  • catch (Exception raison) //
  • String req "select from tab"
  • try
  • reponsemyreq.executer_req(req)
  • catch (Exception raison)
  • for (int i0 iltreponse.length i)
  • System.out.println(reponsei)

23
Classes impliquées sur le client
interface
classe
Classe statique
Package
Classe Abstraite
24
Classes impliquées sur le serveur
25
Schéma général de développement
Description dinterface en IDL
(2) Implantation des interfaces IDL
(1) Compilation IDL
(5) Implantation des clients
Code des classes
Squelettes IDL
Souches IDL
Code des clients

(3) Implantation des serveurs

Applications clientes
(4) Installation Configuration des serveurs
Référentiel des Implantation
26
Les Services CORBA
OMA Object Management Architecture
Les Canevas CORBA
La Plomberie CORBA
27
OMG Services
?????
Utilitaires Communs Services orientés utilisateurs
Santé
Finance
Télécom
verticaux
Objets Développés Spécifiques et non standardisés
Gestion information
Administration Système
Gestion des tâches
IU
horizontaux
Nommage
Persistance
Transactions
Collections
Temps
Négociateurs
Licences
Concurrence daccès
Propriétés
Externalisation
Versions
Evénement
Cycle de vie
Relations
Sécurité daccès
Service Objet Communs Services orientés systèmes
28
Un autre exemple Médicaments
  • typedef sequenceltstringgt liste_chaine
  • interface Medicaments
  • attribute string code_cip
  • attribute string nom_medicament
  • liste_chaine donner_indications(in string
    code_cip)
  • liste_chaine donner_contre_indications(in string
    code_cip)
  • liste_chaine donner_effets_indesirable(in string
    code_cip)
  • struct_interac donner_interactions(in string
    code_cip1,in string code_cip2)
  • struct resultat_interactions
  • string principe_actif1 string principe_actif2
  • string nom_pa1 string nom_pa2
  • string libelle_gravite
  • string libelle_message
  • string type_interaction
  • typedef sequenceltresultat_interactionsgt
    struct_interac

29
Canevas de composants
Description des médicaments
Service de requêtage
Client
ORB
ORB
ORB
Espace 1
Espace 2
Espace 3
30
Architecture fonctionnelle de lORB
Implantation Objet serveur
Client
Entrepôt des Interfaces
Entrepôt Implantation
Squelettes IDL (statique)
Squelettes Dynamique
Adaptateur dobjets
Interface de lORB
Invocation Dynamique
Souches IDL
Noyau de lORB
Spécifique à lORB
Interface standard des ORB
Une interface par classe dobjet
31
Composants de Corba (Spec. V2.0)
  • ORB Négociateur de requêtes objet
  • BOA Adaptateur dobjets
  • IDL Langage de définition des interfaces
  • SII Interface dinvocation statique
  • IR Entrepôt des interfaces et implantations
  • Mise en correspondance vers langages hôtes java,
    c, c ...
  • IIOP Communication inter-ORB
  • DII Interface dinvocation dynamique
  • DSI Squelette dinterface dynamique

32
CORBA, cest
  • Une architecture complète dobjets distribués
  • Des spécifications techniques qui font partie
    dun tout lOMA
  • Séparation entre la couche service (IDL) et la
    plomberie (ORB)

33
Limitation des fonctionnalité
  • Pas de réponse par rapport aux problèmes
    classiques des applications distribuées
  • Délais dattente
  • Tolérance aux pannes
  • Ordonnancement des événements
  • Verrou Mortel
  • De plus
  • Pas de transmission d'objets
  • Pas de traitements groupés
  • Problème des objets à granularité fine

34
Limitation des performances
  • Plus lent quune application spécifique
  • Surcoût lié à la résolution de noms
  • Traitement des paramètres
  • Recopie de données
  • Gestion de la mémoire
  • Démultiplexage
  • Probleme classique
  • Trouver léquilibre entre extensibilité,
    solidité, maintenabilité et efficacité des
    couches de bas niveau
  • Un bon ORB devrait être capable doptimiser les
    fonctionnalités supérieures

35
Modes d'invocation transparent
  • objetDistant.methode( )
  • objetDisantServicedeRecherche.recherche("UnObjet"
    )
  • resultatobjetLocal.methode(objetDistant)
  • resultatobjetDistant.methode(objetDistant2)
  • ObjetDistantnew ObjetDistant( )

36
Java est adapté à la distribution
  • Java est adapté pour l'Internet
  • objet
  • syntaxe simple
  • portable
  • sécurisé
  • Internet est un réseau pensé pour la distribution
  • standardisation des protocoles
  • expansion mondiale
  • coût d'accès réduit

37
Java EJB /RMI
  • Distribution d'objets sur un réseau
  • Appel standard indépendant de la localisation
  • Modèle objet non remis en cause
  • Sécurisation
  • Ramasse Miette
  • Implantation aussi simple que si locale
  • - Réservé à Java
  • Chargement dynamique des stubs d'invocation

38
Marché des objets distribués
  • Architectes de canevas de composants
  • Développeurs de composants
  • Intégrateurs de composants
  • -------------------------------------------------
  • Biblio ?
  • ORB public HORB, MICO
  • Manuels de Iona, Visigenic...
  • http//www.iona.com,
  • http//www.visigenic.com
  • http//www.omg.org
Write a Comment
User Comments (0)
About PowerShow.com