libvirt提供了一套API供我們對虛擬機進行管理。官方給出了各種連接的示例http://libvirt.org/uri.html#URI_xen ,我最終選擇用TLS方式進行遠程連接,因爲配置完服務器和和管理機的證書後,就不需要輸入密碼了,官方對於證書的配置也有說明,這有一篇關於如何配置證書的文章,很簡潔,照的做就可以了證書配置。
然後就是寫代碼了,官方最新是libvirt-0.5.1.jar,但是開發過程中發現一些api沒有實現,只能替換成之前的jar包,
官網有源碼,用ant編譯一下就可以了,現在項目中用的是libvirt-0.4.6.jar。
package com.test;
import org.libvirt.Connect;
import org.libvirt.Domain;
import org.libvirt.LibvirtException;
public class VMmain {
public static void main(String[] args) {
try {
Connect conn = new Connect("xen+tls://[email protected]");
for(int id : conn.listDomains()){
Domain dom = conn.domainLookupByID(id);
System.out.println(dom.getID() + ":" + dom.getName());
}
} catch (LibvirtException e) {
e.printStackTrace();
}
}
}
注:以上代碼是運行在linux環境下的,安裝了libvirt和virt-manager,程序會自動調用libvirt的c組件的,windows下要自己配置下。