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

API standards et tierces Java Discussion :

[RMI] RMIClassLoader & Equinox


Sujet :

API standards et tierces Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 36
    Points
    36
    Par défaut [RMI] RMIClassLoader & Equinox
    Bonjour,

    Je développe actuelement une application OSGi avec equinox.

    Configuration:

    Serveur :
    BundleA : une classe A (serializable). Cette classe n'est pas exportée.
    BundleX : une classe qui gere la communication avec le client. Ce bundle ne connait pas A (n'importe pas A).

    Client :
    BundleA : le même bundle que celui du serveur.
    BundleY : une classe de callback qui vont être appelés par le serveur. Ce bundle ne connait pas A.
    BundleZ : gère les instances de A sérialisées par le serveur.

    Code dans bundle X :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Le BundleX manipule instanceA comme étant un type Object.
    // il veut envoyer cet objet au client
    getClient().callback((Object)instanceA)
    Code dans BundleY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void callback(Object o) {
        myBundleZObject.handleObject(o);
    }
    A l'exécution j'ai ce style d'erreur :

    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: bundleA.A
    ...

    En regardant plus en détail la StackTrace je vois qu'un certain RMIClassLoader essaye de me charger la classe A,
    mais il ne la trouve pas.

    Par contre si j'exporte A et que j'importe cette classe dans les BundleX et BundleY çà fonctionne.

    Je voudrais garder une certaine indépendance entre mes bundles. Les bundle X et Y ne veulent pas savoir quel type d'objet ils manipulent.
    Ils ne font que les transmettre à d'autres bundles qui eux sauront quoi en faire comme le bundle Z.

    Je ne sais pas si vous avez le temps de m'éclairer sur ce problème.
    Je vous remercie par avance.

    Cordialement,

    Webskin.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 36
    Points
    36
    Par défaut
    J'ai trouvé la solution:

    BundleA manifest:
    Export-Package: bundleA.A; type="myType"
    BundleX & BundleY manifest:
    DynamicImport-Package: *; type="myType"
    Ceci implique que le classLoader du bundleX et bundleY va charger toutes les classes des packages de type myType.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RMI] Impossible de lancer mon serveur
    Par Dahu dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 11/06/2006, 09h17
  2. [Rmi]CastException
    Par splend_f dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 21/05/2004, 17h59
  3. [Info] Socket vs RMI
    Par Erok dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 18/05/2004, 16h00
  4. [rmi] Comment exécuter rmic sous Jbuilder9
    Par ensi dans le forum JBuilder
    Réponses: 4
    Dernier message: 27/03/2004, 09h09

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