0
votes

I have the SAME version Java Corba Server application deployed on two different UNIX machines, BUT same version of OS Red Hat Linux. Connecting with the same client and sending a message I receive what looks like the correct reply, but with different codebase length message.

The communication is sync, client calls a method on the server object and the method returns an object.

Bellow are the two examples of reply message from the server1 respectively server 2:

47 49 4F 50 01 02 00 01 00 00 00 00 00 00 08 E6  GIOP............
00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 10  ................
00 4C 00 6F 00 67 00 69 00 6E 00 20 00 4F 00 4B  .L.o.g.i.n. .O.K
00 00 00 26 00 4C 00 6F 00 67 00 69 00 6E 00 20  ...&.L.o.g.i.n. 
00 52 00 65 00 71 00 75 00 65 00 73 00 74 00 20  .R.e.q.u.e.s.t. 
00 52 00 65 00 70 00 6C 00 79 00 00 00 00 00 A2  .R.e.p.l.y......
00 4C 00 6F 00 67 00 69 00 6E 00 52 00 65 00 71  .L.o.g.i.n.R.e.q
00 75 00 65 00 73 00 74 00 20 00 66 00 72 00 6F  .u.e.s.t. .f.r.o
00 6D 00 20 00 5B 00 63 00 6C 00 69 00 65 00 6E  .m. .[.c.l.i.e.n
00 74 00 3D 00 20 00 2D 00 20 00 73 00 65 00 73  .t.=. .-. .s.e.s
00 73 00 69 00 6F 00 6E 00 49 00 44 00 3D 00 31  .s.i.o.n.I.D.=.1
00 36 00 35 00 33 00 34 00 34 00 39 00 30 00 32  .6.5.3.4.4.9.0.2
00 32 00 5D 00 20 00 74 00 6F 00 20 00 52 00 54  .2.]. .t.o. .R.T
00 50 00 6F 00 73 00 65 00 50 00 72 00 6F 00 76  .P.o.s.e.P.r.o.v
00 69 00 64 00 65 00 72 00 2C 00 20 00 72 00 65  .i.d.e.r.,. .r.e
00 61 00 73 00 6F 00 6E 00 20 00 3A 00 20 00 4F  .a.s.o.n. .:. .O
00 4B 00 00 62 8D A1 3E                          .K..b..>



47 49 4F 50 01 02 00 01 00 00 00 00 00 00 0D E4  GIOP............
00 00 00 00 00 00 00 00 01 00 00 26 00 00 00 09  ...........&....
4C 6F 67 69 6E 20 4F 4B 00 6D 79 5F 00 00 00 14  Login OK.my_....
4C 6F 67 69 6E 20 52 65 71 75 65 73 74 20 52 65  Login Request Re
70 6C 79 00 00 00 00 52 4C 6F 67 69 6E 52 65 71  ply....RLoginReq
75 65 73 74 20 66 72 6F 6D 20 5B 63 6C 69 65 6E  uest from [clien
74 3D 20 2D 20 73 65 73 73 69 6F 6E 49 44 3D 31  t= - sessionID=1
37 36 35 35 32 31 31 31 39 5D 20 74 6F 20 52 54  765521119] to RT
50 6F 73 65 50 72 6F 76 69 64 65 72 2C 20 72 65  PoseProvider, re
61 73 6F 6E 20 3A 20 4F 4B 00                    ason : OK.

It seems that in the first case it uses 2 bytes for a char, while for the second case it uses only one byte to encode a char(but not sure). On the second message the client fails to read this stream(even tough for me it looks okish)

The question is what config determines this? Both server IDL objects seems to have the same capabilities. The IDL for the client and the server is the same(same version). Both are Java applications, same version of JVM.

I'm sure it's something related to the server Linux machine(something that defaults to one or another), but don't know exactly what is triggering this behavior.

The version of Corba is Visibroker 8.5.

Can someone point me please to something, anything... :) What can I do on the server side(any config)? How about on the client side?

1
wow, are people still using this? Consider web servicesReimeus
For backwards compatiblity with legacy clients that we cannot force them to migrate :)Ciprian V

1 Answers

0
votes

Wrong classpath!It seems that this behaviour was due to the fact that I was having same interface twice in classpath: one was used for java and the other for .NET clients. Once i did the cleanup, everything worked as expected!