Java 无法检索已启用允许故障转移级别控制策略的群集的插槽信息

Java 无法检索已启用允许故障转移级别控制策略的群集的插槽信息,java,vmware,vsphere,Java,Vmware,Vsphere,我在尝试检索启用允许故障切换级别控制策略的VMware群集的插槽信息时遇到一些问题。我使用VI-javaapi 调用以下方法时: clusterComputeResource.retrieveDasAdvancedRuntimeInfo() 我要么得到以下异常: java.rmi.RemoteException: VI SDK invoke exception:java.rmi.RemoteException: Exception in WSClient.invoke:; nested ex

我在尝试检索启用允许故障切换级别控制策略的VMware群集的插槽信息时遇到一些问题。我使用VI-javaapi

调用以下方法时:

clusterComputeResource.retrieveDasAdvancedRuntimeInfo()
我要么得到以下异常:

java.rmi.RemoteException: VI SDK invoke exception:java.rmi.RemoteException: Exception in 
WSClient.invoke:; nested exception is:
java.lang.NoSuchFieldException: slotInfo
at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:122)
at com.vmware.vim25.ws.VimStub.retrieveDasAdvancedRuntimeInfo(VimStub.java:269)
或者我得到类型为ClusterDasAdvancedRuntimeInfo的结果 但是我需要子类ClusterDasFailoverLevelAdvancedRuntimeInfo来获取SlotInfo字段(转换到所需的子类也不起作用)

我试图通过SOAPUI直接访问vcenter的web服务,它工作起来没有任何问题,但使用VijavaAPI却没有


提前感谢您的帮助

在进行了大量调试以了解VI-Java-API的内部功能之后,我发现如果使用子类的名称而不是超类的名称(作为最后一个参数)调用web服务客户机(wsc),响应将正确转换。这样就可以毫无问题地检索插槽信息。以下是针对那些遇到相同问题的人的解决方案:

ClusterDasFailoverLevelAdvancedRuntimeInfo clusterDasFailoverLevelAdvancedRuntimeInfo = null;
try {
final Argument[] paras = new Argument[1];
paras[0] = new Argument("_this", "ManagedObjectReference", clusterComputeResource.getMOR());

clusterDasFailoverLevelAdvancedRuntimeInfo = (ClusterDasFailoverLevelAdvancedRuntimeInfo) serviceInstance.getServerConnection().getVimService().getWsc().invoke("RetrieveDasAdvancedRuntimeInfo", paras, "ClusterDasFailoverLevelAdvancedRuntimeInfo");
} catch (final Exception e) {
//error handling
}

(请注意,这仅在启用准入控制故障转移级别策略时有效!!!)

您可以指定要调用的VMware吗?Vsphere?什么版本?ESX?什么版本?