J'ai un serveur CORBA C++ qui implémente une interface lançant une exception définie par l'utilisateur.Orber (ORB Erlang) ne peut pas intercepter les exceptions définies par l'utilisateur lorsqu'il est lancé par TAO orb
Je peux facilement attraper l'exception spécifique lorsque le client et le serveur sont tous deux implémentés en C++ (testés en utilisant à la fois TAO orb et omniORB).
Mais lorsque j'appelle la même méthode d'Erlang (en utilisant orber), l'exception apparaît comme une exception générique et non comme une exception spécifique définie par l'utilisateur.
Pour tester cela, je viens d'utiliser simple IDL -
interface Messenger {
exception cirrus_error{
short error_code;
string error_desc;
};
boolean send_message(in string user_name,
in string subject,
inout string message) raises (cirrus_error);
};
Si le serveur et le client sont en C++ - l'exception que je reçois est (pour le test je codé pour toujours jeter l'exception de l'utilisateur)
CORBA exception: cirrus_error (IDL:Messenger/cirrus_error:1.0)
Mais lorsqu'il est invoqué par Erlang - je reçois -
** exception throw: {'EXCEPTION',{'UNKNOWN',[],1330446337,'COMPLETED_MAYBE'}}
in function corba:raise/1
Est-ce que je dois faire avec quelque chose de spécial Hile indiquant l'application Orber pour activer le bon comportement?
Edit - Voici comment j'appelle serveur de Erlang -
On invite Erlang, voici ce que je fais -
1> orber:jump_start().
2> O = corba:string_to_object(IORStr).
3> 'Messenger':send_message(O, "s", "t", "f").
** exception throw: {'EXCEPTION',{'UNKNOWN',[],1330446337,'COMPLETED_MAYBE'}}
in function corba:raise/1
Comment appelez-vous le serveur depuis orber? –
Mise à jour de cette question – spkhaira