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

时间:2018-02-20 16:07:39

标签: java character-encoding corba orb

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

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

Bellow是来自server1和服务器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个字节作为char,而对于第二种情况,它只使用一个字节来编码char(但不确定)。在第二条消息上,客户端无法读取此流(对我而言,它看起来很难看)

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

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

Corba的版本是Visibroker 8.5。

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

1 个答案:

答案 0 :(得分:0)

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