为什么 Corba VisiBroker java 服务器应用程序使用不同的 GIOP 消息回复同一个客户端?

Why Corba VisiBroker java server app replies with different GIOP messages to the same client?

我在两台不同的 UNIX 机器上部署了相同版本的 Java Corba Server 应用程序,但 OS Red Hat Linux 的版本相同。连接同一个客户端并发送一条消息,我收到的回复看起来是正确的,但代码库长度不同。

通信是同步的,客户端调用服务器对象上的方法,方法 returns 一个对象。

下面分别是服务器1和服务器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.

似乎在第一种情况下它使用2个字节来编码一个字符,而对于第二种情况它只使用一个字节来编码一个字符(但不确定)。在第二条消息中,客户端无法读取此流(即使对我来说看起来还不错)

问题是什么配置决定了这个?两个服务器 IDL 对象似乎具有相同的功能。客户端和服务器的 IDL 相同(相同版本)。两者都是 Java 应用程序,相同版本的 JVM。

我确定它与服务器 Linux 机器有关(默认为一台或另一台机器),但不知道究竟是什么触发了此行为。

Corba 版本为 Visibroker 8.5。

有人可以指点我一些东西吗,任何东西... :) 我可以在服务器端做什么(任何配置)?在客户端怎么样?

错误的类路径!似乎这种行为是由于我在类路径中有两次相同的接口:一个用于 java,另一个用于 .NET 客户端。完成清理后,一切都按预期进行!