我正在尝试创建一个系统,其中master将创建与vcenter的连接,并将serviceinstance对象传递给一堆性能收集器,然后可以执行其工作并退出。我的问题是分享SI对象的最佳方法是什么?我正在考虑使用消息传递队列,但我并不热衷于序列化对象。还有其他更有效的方法吗?
答案 0 :(得分:1)
SI只会在创建SI的vCenter上运行。如果这对您来说不是一个问题,那么只需将会话ID放在总线上供您的工作人员接听,然后他们应该能够使用会话ID创建一个新的SI。
第一次连接时:
ServiceInstance serviceInstance = new ServiceInstance(new URL("https://vcenter/sdk"),user, passwd, true);
String sessionId = serviceInstance.getServerConnection().getSessionStr();
接下来将sessionId放在总线上。让你的工作人员接听并做:
ServiceInstance si2 = new ServiceInstance(new URL("https://vcenter/sdk"), sessionId, true);
该会话的默认超时时间为30分钟IIRC ..
还有点自我插入我会建议从vijava转移到yavijava。它是我维护的一个分支,增加了许多漂亮的功能,我甚至目前还增加了6.0支持。 https://github.com/yavijava/yavijava