[omniORB] omniORB and TAO

Duncan Grisby duncan at grisby.org
Fri Jun 17 12:30:23 BST 2005


On Friday 17 June, pouchin at gmail.com wrote:

> I'm using omniORB(4.1, omniORBpy 3x) at client and ACE (5.3.1) TAO
> (1.3) at server.

[...]
> When i call op1 on servant, i got MARSHALL exception. All parameters filled
> correctly.

It's either a bug in TAO, or just that you have failed to register a
valuetype factory. If it is that you have failed to register a valuetype
factory, TAO is still subtly wrong because it is using a TAO specific
exception minor code (0x544100) instead of the OMG standard code it
should use (0x4f4d0001).

> I've noticed that omniORBpy doesn't put RepoIds in CDR while
> marshaling valuetype parameter.

Indeed it doesn't in simple cases like this. It doesn't have to. The
spec only requires it to send repoids if you are sending a value derived
from the type specified in IDL, or it has an RMI: repository id.

I've unpicked the GIOP message, and unless I've misinterpreted the spec,
omniORB is doing the right thing:


GIOP message - HEXDUMP 128 bytes
47 49 4f 50 01 02 01 00  74 00 00 00 02 00 00 00   GIOP....t.......
G  I  O  P   1.2  little endian
                     request
                         116 bytes   request id

03 00 00 00 00 00 73 14  1b 00 00 00 14 01 0f 00   ......s.........
sync with target
            key addressing 
                  pad..  object key.............

52 53 54 bf 77 b2 42 28  33 04 00 00 00 00 00 01   RST.w.B(3.......
.......................  .......................

00 00 00 01 00 00 00 00  04 00 00 00 6f 70 31 00   ............op1.
.......................  operation name.........

01 00 00 00 01 00 00 00  0c 00 00 00 01 00 00 00   ................
1 service context
            codesets     12 octets..............

01 00 01 00 09 01 01 00  64 00 00 00 01 00 00 00   ........d.......
........................ a=100       seq<1>

08 ff ff 7f 0d 00 00 00  09 00 00 00 73 66 64 66   ............sfdf
chunked valuetype encoding; no repoids
            13 octets in chunk
                         string<9>   ...........

64 64 67 64 00 00 00 00  ff ff ff ff c8 00 00 00   ddgd............
.............. pad.....  chunk end   c=200



I suggest you file a bug report for TAO.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --



More information about the omniORB-list mailing list