目前我正在开发基于Axis2的Web Service项目。 在那里,当我向服务器代码添加日志以打印特定对象的长度时(在Skelton返回输出之前),它会正确打印它。
但是当我收到相同的代码到客户端后,它会给出一个空指针。 (OTA_VehAvailRateRSSequence_type0在下面的exaple中为null)
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);
这可能是什么原因? 从Skelton返回后是否有可能丢失对象。
答案 0 :(得分:1)
我可以看到一个序列类型嵌套在这里可能触发这个的选择类型,OTA xsd类型非常复杂并且在使用Axis2时可以解决这类问题,但我不认为它与Axis2有关但这可能是非标准xsd类型定义的问题,您可以尝试从xsd中删除以太嵌套的序列类型或选择类型,并且还要记住在执行Axis2代码生成时在客户端和服务器端都有相同的xsd / wsdl