Java Corba操作返回的序列大小是否有限制?

Java Corba操作返回的序列大小是否有限制?,java,sequence,corba,Java,Sequence,Corba,我的Corba操作之一是返回联合类型的序列(二维数组)的序列 在一次测试中,该操作不能同时处理超过32KB的返回数据。若总数组大小超过32 kB,则客户端上的响应仅在32 kB以内正确解组。从那时起,它由未初始化的数据填充(最终导致解组失败) 在相同的环境中,还有其他操作可以返回较大的数据。然而,这是返回序列中的序列的唯一操作 我应该知道,通过Corba传输的序列或数据的长度是否有限制 我的环境由一个32位Java 6客户机(使用标准Java ORB)和一个64位服务器(C,带有2AB ORB实

我的Corba操作之一是返回联合类型的序列(二维数组)的序列

在一次测试中,该操作不能同时处理超过32KB的返回数据。若总数组大小超过32 kB,则客户端上的响应仅在32 kB以内正确解组。从那时起,它由未初始化的数据填充(最终导致解组失败)

在相同的环境中,还有其他操作可以返回较大的数据。然而,这是返回序列中的序列的唯一操作

我应该知道,通过Corba传输的序列或数据的长度是否有限制

我的环境由一个32位Java 6客户机(使用标准Java ORB)和一个64位服务器(C,带有2AB ORB实现)组成

到目前为止,我已经尝试过:

在客户端和服务器端调整了几个似乎相关的Orb属性—超时设置(
transport.ORBTCPReadTimeout
—超时设置为一个大数字)、GIOP设置(
GIOP.ORBFragmentSize
GIOP.ORBBufferSize
—都设置为大数字)。这些设置均未更改行为


使用数据包嗅探器,我可以确认数据已发送到客户端。问题发生在解组过程中

CORBA无界序列实际上有一点界,但还不足以让您注意到它

它们被编组为无符号long(或者用CORBA术语,一个
CORBA::ULong
),它告诉编组引擎每个元素下一个将出现多少次。它应该始终能够包含多达2147483647个元素(即2^32,相当于
CORBA::ULong
)。这比32kb多得多,所以听起来你的球体有个bug


此外,它通过部分填充而不是抛出一个
CORBA::MARSHAL
异常而默默地失败,这一事实非常糟糕。告诉您的ORB供应商开始测试基础知识。

这听起来不仅仅是一个CORBA实现中的错误,通常最大值应该是max CORBA::ulongtanks,我实际上也认为这可能是一个错误。客户端ORB是一个Oracle JDK ORB,因此我将尝试搜索这一个的已知错误。您可以向公众提供一个示例,以确保您这边没有错误:)谢谢,我接受这一个作为答案-它确实似乎是某种ORB错误。我再次调试了这个问题,但只能确认它(我在两端添加了添加到Corba存根中的日志,我可以看到一端序列化到流的数据与另一端从流读取的数据不匹配)。有趣的是,这似乎只发生在这种数据类型(联合序列序列)上。