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 PolicyError lors de la déclaration d'une RelativeRoundtripTimeoutPolicy


Sujet :

CORBA

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème PolicyError lors de la déclaration d'une RelativeRoundtripTimeoutPolicy
    Bonjour à tous,

    Pour un projet, j'ai mis en place une architecture CORBA "classique" où plusieurs clients utilisent les services fournis par les objets distribués d'un même serveur.

    Afin de gérer la robustesse du système, j'aimerai trouver un moyen de définir un timeout lorsque des clients souhaitent souhaitent joindre un des objets distribués mais que celui-ci n'est pas accessible ou met trop de temps à répondre (câble débranché, réseau indisponible ou autre).

    En parcourant la documentation disponible sur le web, j'ai trouvé une manière de faire qui me semble adaptée : l'utilisation de "timeout policies" et notamment de la RelativeRoundtripTimeoutPolicy (décrite à la page 270 de ce document).

    Il est possible d'utiliser de telles politiques à différents niveaux (ORB, thread ou POA). De mon côté, je souhaite utiliser cette politique pour tous les appels de services, je pense donc que le plus simple est que je définisse la RelativeRoundtripTimeoutPolicy au moment de l'initialisation du bus ORB chez chaque client.

    J'ai donc suivi à la lettre la suite d'instructions donnée dans le document pré-cité et initialisé un PolicyManager (tout cela est fait juste après l'initialisation de l'ORB) :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    		
    long relative_expiry = 4L * 10000000L; // 4 seconds
    		try{
    			Any relative_roundtrip_timeout_value = orbInstance.create_any();
    			TimeTHelper.insert(
    					relative_roundtrip_timeout_value,
    					relative_expiry
    			);
    			Policy [] policies = new Policy[1];
    			policies[0] = orbInstance.create_policy(
    					RELATIVE_RT_TIMEOUT_POLICY_TYPE.value, 
    					relative_roundtrip_timeout_value);
    
    			PolicyManager policy_manager = PolicyManagerHelper.narrow(orbInstance.resolve_initial_references("ORBPolicyManager"));
    			policy_manager.set_policy_overrides(
    					policies, 
    					SetOverrideType.ADD_OVERRIDE);
    		}
    		catch(PolicyError e){
    			logger.error(e); 
    		}
    		catch(InvalidPolicies e){
    			logger.error(e); 
    		}
    		catch (InvalidName e) {
    			logger.error(e);
    		} 
    		catch(SystemException e){
    			logger.error(e); 
    		}
    Malheureusement je recolte à chaque fois une PolicyError au niveau de la ligne où
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    orbInstance.create_policy(...)
    est appelé.

    Le code de l'erreur est de type BAD_POLICY_TYPE, ce qui signifie que "le type de la valeur demandée pour la politique n'est pas valide pour ce type de politique".
    J'ai fait pas mal de recherche depuis une semaine mais je ne vois pas ce que je dois modifier.

    Une âme charitable aurait-elle une idée pour m'aider?

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 219
    Points : 302
    Points
    302
    Par défaut
    Bonjour,

    navré si la réponse vient trop tard...

    D'après la spec, le type TimeBase::TimeT est un "long long" (avec comme unité: 100 nanoseconds).
    Le code correct devrait donc être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Any relative_roundtrip_timeout_value = orbInstance.create_any();
    relative_roundtrip_timeout_value.insert_longlong(relative_expiry);
    ...

Discussions similaires

  1. Utiliser la valeur d'un spinner lors de la déclaration d'une variable locale
    Par Jiggazzzzz dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 05/12/2011, 09h31
  2. Erreur lors de la déclaration d'une matrice
    Par miss_angel dans le forum OpenCV
    Réponses: 1
    Dernier message: 13/10/2011, 11h31
  3. Figer une variable de classe lors de sa déclaration dans une itérative
    Par Freeluvs dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/02/2010, 15h16
  4. Réponses: 10
    Dernier message: 13/01/2008, 11h52
  5. Problème transparence lors de la conversion d'une image
    Par Riki dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 20/11/2007, 12h33

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