IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

CORBA Discussion :

Problème de casting (Corba)


Sujet :

CORBA

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Problème de casting (Corba)
    Salut à tous,

    SVP veillez m'aider à résoudre mon problème.

    Mon fichier bibliotheque.idl est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    module serviceBiblio
    {
    	interface Livre
    	{
    		attribute string auteur;
    		attribute string titre;
    		attribute long id;
    	};
    	interface Bibliotheque
    	{
    		exception LivreExisteDeja{ string titre; };
    		exception LivreIntrouvable { string titre; };
    		Livre CreerLivre(in string auteur,in string titre, in long id) raises(LivreExisteDeja);
    		Livre TrouverLivre(in long id) raises(LivreIntrouvable);
    		void RetirerLivre(in long id) raises(LivreIntrouvable);
    	};
    };
    l'énoncé de l'exercice indique qu'il faut céer une classe "LivreImpl" (implémentation de la classe Livre) et une autre classe "BibliothequeImpl"(implémentation de la classe Bibliotheque).
    La classe "LivreImpl" contient les getters et les setters (selon l'IDL) et un constructeur dont la signature est le suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public LivreImpl(int id,String titre,String auteur)
    donc voici un extrait de classe "BibliothequeImpl" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class BibliothequeImpl extends BibliothequePOA
    {
    	private Livre livre;
    	private Vector<Livre> VLivre;
    	int i;
    	public BibliothequeImpl()
    	{
    		VLivre=new Vector<Livre>();
    	}
    	
    	public Livre CreerLivre(String auteur,String titre,int id) throws LivreExisteDeja
    	{
    		for(i=0;i<VLivre.size();i++)
    			if(id==VLivre.get(i).id())
    				throw new LivreExisteDeja(titre);
    		livre=(Livre) new LivreImpl(id, titre, auteur);
    		VLivre.add(livre);
    		return livre;
    	}
             //SUITE DU CODE
    }
    voici un extrait de la classe serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BibliothequeImpl bibliothequeImpl=new BibliothequeImpl();
    Bibliotheque bibliotheque=bibliothequeImpl._this(orb);
    //puis j'ai utilisé le service de nommage pour référencer l'objet "bibliotheque"
    voici un extrait de la classe Client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    org.omg.CORBA.Object obj=orb.resolve_initial_references("NameService");
    NamingContext nc=NamingContextHelper.narrow(obj);
    //....
    org.omg.CORBA.Object bibobj=nc.resolve(bib);
    Bibliotheque bibliotheque=BibliothequeHelper.narrow(bibobj);			
    bibliotheque.CreerLivre("aa", "aaa",1);
    Mais Lors de l'exécution de la classe serveur une erreur se déclanche (Il s'agit surement d'un problème de casting lors de l'invocation de la méthode "CreerLivre" de la classe "BibliothequeImpl"; le code spécifique à l'exception est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Caused by: java.lang.ClassCastException: serviceBiblio.LivreImpl cannot be cast to org.omg.CORBA.Object
    	at serviceBiblio.BibliothequeImpl.CreerLivre(BibliothequeImpl.java:24)
    Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Le code que tu utilises tente visiblement de transformer un BibliothequeImpl en objet CORBA.
    Hors l'objet CORBA, publiable à l'extérieur, n'est pas l'instance de BibliothequeImpl mais un autre objetBibliotheque, comme tu le montres dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BibliothequeImpl bibliothequeImpl=new BibliothequeImpl();
    Bibliotheque bibliotheque=bibliothequeImpl._this(orb);
    Il faudrait donc montrer ton code serveur, mais il est probable que ce code utilise directement un BibliothequeImpl à la place d'un Bibliotheque.

Discussions similaires

  1. problème de cast avec CORBA
    Par Irafelo dans le forum Langage
    Réponses: 3
    Dernier message: 12/12/2008, 17h02
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo