[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