說明:html
剛開始一臉懵逼,google了一些資料,發現基本沒有能快速落地的,本身作完後梳理了一下發上來供你們參考。瀏覽器
若是幫到你了,請點贊評論關注,以資鼓勵,多謝~app
實現VMware控制檯功能主要有兩種方式,第一種是直接在Web頁面打開,第二種是使用VMware Remote Console官方工具打開控制檯;工具
第一種用戶體驗更好,第二種開發起來更加方便快捷。因爲項目時間緣由,暫選擇第二種,後期迭代使用第一種方式。。。ui
簡述:google
一、從vClient獲取一個VMRC協議的連接格式以下:spa
vmrc:// clone:[VC-TICKET] @ [VC] /? moid=[VM-MOREF-ID]code
主要有幾塊:VMRC協議標識、ticket、vClient地址、指定vm的morId。orm
二、經過vClient clone Session,調用acquireCloneTicket() 獲取ticket,該ticket可在原Session失效後繼續使用;htm
三、獲取vClient地址;
四、獲取指定vm的ManageredObjectReference,即morId;
五、VMware Remote Console在安裝時會向系統註冊,瀏覽器經過URL自動解析,調用該工具,將2-4步中獲取的三個參數傳入VMware Remote Console從而實現控制檯登陸。
代碼以下;
1 public class ConsoleHandler { 2 private static Logger logger = LoggerFactory.getLogger(ConsoleHandler.class); 3 4 public String buildVMRCUrl(String vmName) { 5 StringBuilder sb = new StringBuilder(); 6 String VMRC = "vmrc://clone:"; 7 8 ServiceInstance serviceInstance = null; 9 try { 10 serviceInstance = CommonUtils.createServiceInstance(); 11 } catch (MalformedURLException | RemoteException e) { 12 logger.error("createServiceInstance error.", e); 13 } 14 String ticket = getTicket(serviceInstance); 15 String vcHost = CommonUtils.getVcHost(); 16 String moid = getMoid(vmName, serviceInstance); 17 return sb.append(VMRC).append(ticket).append("@").append(vcHost).append("/?moid=").append(moid).toString(); 18 } 19 20 private String getTicket(ServiceInstance serviceInstance) { 21 String ticket = null; 22 try { 23 ticket = serviceInstance.getSessionManager().acquireCloneTicket(); 24 } catch (RemoteException e) { 25 logger.error("acquireCloneTicket error", e); 26 } 27 return ticket; 28 } 29 30 31 private String getMoid(String vmName, ServiceInstance si) { 32 VirtualMachine vm; 33 String moid = null; 34 try { 35 vm = (VirtualMachine) new InventoryNavigator(si.getRootFolder()).searchManagedEntity("VirtualMachine", 36 vmName); 37 moid = vm.getMOR().getVal(); 38 } catch (RemoteException e) { 39 e.printStackTrace(); 40 } 41 return moid; 42 } 43 }
獲取ServiceInstance、ticket ( acquireCloneTicket() )的方法見以前的文章,再次推薦該SDK,棒棒噠~~~
https://www.cnblogs.com/AzkbanHan/p/10024397.html