[Biocorba-l] report on Anys in CORBA::ORBit

Martin Senger senger@ebi.ac.uk
Tue, 12 Jun 2001 15:08:23 +0100 (BST)


Recently we have discussed here the potential problems with Anys in perl
ORBs. I need Anys in the 'Novella' project (a bridge between non-valuetype
ORBs and BSA analysis engine) - so I have checked and found serious
interoperability problems.
   I was using ORBit 0.5.8 with the latest CORBA::ORBit 0.4.3 (but patched
with the really latest version from the cvs repository).
   For Java parts (both servers and clients) I have been using ORBacus
4.0.5.
   All sources for tests are available in directory 'Tests' in the CVS
module 'novella' (http://industry.ebi.ac.uk/openBSA/cvsebi.html has
details about how to download cvs module from the EBI).

1) All examples work fine when both server and client are orbit-perl. That
means we have here an interoperability problem.

2) Standalone Anys work also fine. For example, method:
   any get_any (in any my_any)

3) The problems are when an Any is a member of a struct. Such Any is not
passed throught the wire at all (in any combinantion of perl-orbit and
java servers/clients). Or it is lost during un/marshalling - I do not know
where.
   Interesting - especially for the orbit-perl developers - is that the
Any in struct works if it is the first member of the struct. So, passing
this:

  struct MyStructure {
    any    value;
    string name;
  };                        

works, but passing this:

  struct MyStructure {
    string name;
    any    value;
  };                        

does not work.

4) When I am passing an array of Anys:
   - again it works for orbit-perl on both sides,
   - surprisingly itworks for the combinantion client-in-orbit-perl and
server in java-orbacus (which gives me some chnaces to continue with the
'novella' project, at least until the bug is fixed)
    - and it does not work for client-in-java and server-in-orbit-perl
(actually it works only for the first element of the array but not for the
rest - sic!).

5) Sending/receiving array of structs with an Any as a member also does
not work (and again it works for the first struct but not for the others).
Just to be sure, I also checked sending/receiving array of structs without
any Any as members - and it works fine. So the problem is with Anys not
with sending arrays of structs.

   Philip Lijnzaad is going to report this to the orbit-list.

   Martin


-- 
Martin Senger

EMBL Outstation - Hinxton                Senger@EBI.ac.uk     
European Bioinformatics Institute        Phone: (+44) 1223 494636      
Wellcome Trust Genome Campus             (Switchboard:     494444)
Hinxton                                  Fax  : (+44) 1223 494468
Cambridge CB10 1SD
United Kingdom                           http://industry.ebi.ac.uk/~senger