从 Axis2 WS - java 中的 Skelton 返回对象后,是否有可能丢失对象



目前,我正在研究基于 Axis2 构建的 Web 服务项目。在那里,当我向服务器代码添加日志以打印特定对象的长度时(在 Skelton 返回输出之前),它会正确打印它。

但是当我收到后将相同的代码添加到客户端时,它会给出一个空指针。(OTA_VehAvailRateRSSequence_type0在下面的例子中为空)

OTA_VehAvailRateRS oTA_VehAvailRateRS =  stub.CarSearch(oTA_VehAvailRateRQ);
VehicleVendorAvailabilityType[] vehicleVendorAvailabilityTypes = oTA_VehAvailRateRS.getOTA_VehAvailRateRSChoice_type0().getOTA_VehAvailRateRSSequence_type0() .getVehAvailRSCore().getVehVendorAvails().getVehVendorAvail();
logger.info("buildResponse().vehicleVendorAvailabilityTypes.length : " + vehicleVendorAvailabilityTypes.length);

这可能是什么原因呢?从斯克尔顿返回后是否有可能丢失对象.

我可以看到序列类型嵌套在可以选择类型中,这可能会触发这种情况,OTA xsd 类型要复杂得多,在使用 Axis2 时可能会诅咒此类问题,但我认为它与 Axis2 无关,但这可能是非标准 xsd 类型定义的问题,您可以尝试从 xsd 中删除以太嵌套序列类型或选择类型,并记住要有相同的执行 Axis2 代码生成时,客户端和服务器端的 xsd/wsdl。

最新更新