我的 Corba 操作之一是返回联合类型的序列(二维数组)。
在一项测试中,结果证明此操作一次无法处理超过 32 kB 的返回数据。如果整个数组大小超过 32 kB,则客户端的响应只能正确解组至 32 kB。从那时起,它由未初始化的数据填充(最终使解组失败)。
在相同的环境中,还有其他操作能够返回更大尺寸的数据。然而,这是返回序列序列的唯一操作。
我应该注意的一般通过 Corba 传输的序列或数据的长度是否存在限制?
我的环境由一个 32 位 Java 6 客户端(使用标准 Java ORB)和一个 64 位服务器(C,具有 2AB ORB 实现)组成。
到目前为止我已经尝试过:
调整了客户端和服务器端的几个 Orb 属性,这似乎相关 - 超时设置(transport.ORBTCPReadTimeout
- 超时设置为一个大数字),GIOP 设置(giop.ORBFragmentSize
,giop.ORBBufferSize
- 都设置为大数字)。这些设置都没有改变行为。
使用数据包嗅探器,我可以确认数据已发送到客户端。该问题发生在解组期间。