Windows下Libvirt Java API使用教程(一)- 开发环境部署

简介:

  Libvirt(http://libvirt.org/)是一个比较不错的虚拟化环境管理的工具包。核心用c实现,不过提供了不同语言的调用API。官网的简介如下:


 

libvirt is:

  • A toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes), see our project goals for details.
  • Free software available under the GNU Lesser General Public License.
  • A long term stable C API
  • A set of bindings for common languages
  • CIM provider for the DMTF virtualization schema
  • QMF agent for the AMQP/QPid messaging system

libvirt supports:

libvirt provides:

  • Remote management using TLS encryption and x509 certificates
  • Remote management authenticating with Kerberos and SASL
  • Local access control using PolicyKit
  • Zero-conf discovery using Avahi multicast-DNS
  • Management of virtual machines, virtual networks and storage
  • Portable client API for Linux, Solaris and Windows

 

由于笔者我是一个简单而纯粹的Java程序员,所以自然只能依赖于libvirt的Java binding api。
作为一个源码控,我选择下载源码的方式验证使用:
源码的git地址如下:
 
git clone git://libvirt.org/libvirt-java.git 
 
笔者下载源码后,直接构建了Eclipse的工程,当然你也可以用源码编译(ant)出一份jar来依赖:
 
cd libvirt-java 
ant build  
 
libvirt也提供了Maven库:
 
没有Maven?可以直接从Maven库中下载Jar包:
 
 
这么多途径,相信你总可以搞到一份libvirt的源码或者Jar了吧。
 
由于libvirt的核心都是c写的,Java API只是帮助你封装了对动态链接库(dll)文件的本地调用,所以现在应该做的是安装dll文件。
 
libvirt官网提供了自行编译dll文件的脚本:

MSYS Build script

The easiest way is to use the msys_setup script, developed by Matthias Bolte. This is actively developed and kept current with libvirt releases:

https://github.com/photron/msys_setup 


不过笔者并没有尝试该种方式,因为libvirt官网也提供了windows下的安装包:


Experimental installation package

A windows installation package is in development. An experimental version is available here:

http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe

It is not production ready.(注:其并不是已经发布的产品)


该安装包中不仅包含了需要的dll文件,还提供了一个方便好用的virsh-shell 命令行工具,通过命令可以调用libvirt的所有接口(查看,管理虚拟机等。),对于我们的开发调试是非常有帮助的。

安装完成后,想让Java API找到dll文件,还需要指定jna路径,有两种方式,一种是直接设置系统环境变量:

另一种是可在程序中动态指定,笔者选择了后者,比较灵活简单,编写测试代码如下:

 
  1. public void testGetXenVMs() { 
  2.         try { 
  3.             System.setProperty("jna.library.path""D:/Git-Repo/git/libvirt-java/libvirt-java/src/test/java/kubi/coder/"); 
  4.             Connect conn = new Connect("xen+tcp://10.4.55.203/"); 
  5.             System.out.println(conn.nodeInfo().cores); 
  6.             for (String name : conn.listDefinedDomains()) { 
  7.                 System.out.println(name); 
  8.                 if (name != null) { 
  9.                     Domain domain = conn.domainLookupByName(name); 
  10.                     System.out.println(domain.getMaxMemory()); 
  11.                     System.out.println(domain.getUUIDString()); 
  12.                     System.out.println(domain.getInfo().maxMem); 
  13.                     System.out.println(domain.getInfo().state); 
  14.                     System.out.println(conn.listDomains().length); 
  15.                 } 
  16.             } 
  17.         } catch (LibvirtException e) { 
  18.             e.printStackTrace(); 
  19.         } 
  20.     } 

是不是还是找不到dll报异常?

 
  1. Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'virt' 

原来他是搜索叫virt的dll文件。

查看源码:

 
  1. Libvirt INSTANCE = (Libvirt) Native.loadLibrary("virt", Libvirt.class); 

确实如此,将libvirt-0.dll改名为virt.dll。结果终于出来了。
 
:libvirt的Java API封装的比较直观,上手很容易,其入口就是Connect 这个连接类,获取连接后,即可对虚拟机环境进行查看和管理操作。笔者后续会奉上Java API详细使用介绍。

 

 


     本文转自mushiqianmeng 51CTO博客,原文链接:http://blog.51cto.com/mushiqianmeng/863774,如需转载请自行联系原作者





相关文章
|
6天前
|
安全 Unix Linux
Windows如何远程连接服务器?服务器远程连接图文教程
服务器操作系统可以实现对计算机硬件与软件的直接控制和管理协调,任何计算机的运行离不开操作系统,服务器也一样,服务器操作系统主要分为四大流派:Windows Server、Netware、Unix和Linux。今天驰网飞飞将和你分享Windows server远程连接图文教程,希望可以帮助到你
21 4
Windows如何远程连接服务器?服务器远程连接图文教程
|
1天前
|
Java API
Java基础&API(3)
Java基础&API(3)
|
1天前
|
Java 机器人 API
Java基础&常用API(1)
Java基础&常用API(1)
|
2天前
|
SQL 数据管理 关系型数据库
如何在 Windows 上安装 SQL Server,保姆级教程来了!
在Windows上安装SQL Server的详细步骤包括:从官方下载安装程序(如Developer版),选择自定义安装,指定安装位置(非C盘),接受许可条款,选中Microsoft更新,忽略警告,取消“适用于SQL Server的Azure”选项,仅勾选必要功能(不包括Analysis Services)并更改实例目录至非C盘,选择默认实例和Windows身份验证模式,添加当前用户,最后点击安装并等待完成。安装成功后关闭窗口。后续文章将介绍SSMS的安装。
4 0
|
2天前
|
安全 Java 程序员
|
2天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
3天前
|
关系型数据库 MySQL Windows
windows安装MySQL5.7教程
windows安装MySQL5.7教程
12 0
|
3天前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。
|
6天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
24 11
|
6天前
|
Apache 数据安全/隐私保护 Windows
如何在Windows部署TortoiseSVN客户端并实现公网连接内网VisualSVN服务端
如何在Windows部署TortoiseSVN客户端并实现公网连接内网VisualSVN服务端