1、开启TCP连接
编辑 /etc/libvirt/libvirtd.conf,去掉 listen_tls = 0、listen_tcp = 1、tcp_port = "16509" 三行前面的注释
编辑 /etc/sysconfig/libvirtd,去掉 LIBVIRTD_ARGS="--listen" 前面的注释
执行服务重启命令:
systemctl restart libvirtd
2、安装 windows 平台下的 Libvirt 客户端,下载地址如下:
https:<span>//</span><span>libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe</span>
3、新建 maven 项目进行 java sdk 调用(必须装32位的jdk,64位的会有问题)
pom.xml:
<span><?</span>
<span>xml version="1.0" encoding="UTF-8"</span>
<span>?></span>
<span><</span>
<span>project </span>
<span>xmlns</span>
<span>="http://maven.apache.org/POM/4.0.0"</span>
<span>
xmlns:xsi</span>
<span>="http://www.w3.org/2001/XMLSchema-instance"</span>
<span>
xsi:schemaLocation</span>
<span>="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span>
<span>></span>
<span><</span>
<span>modelVersion</span>
<span>></span>4.0.0<span></</span><span>modelVersion</span><span>></span><span><</span><span>groupId</span><span>></span>org.example<span></</span><span>groupId</span><span>></span><span><</span><span>artifactId</span><span>></span>libvirt-demo<span></</span><span>artifactId</span><span>></span><span><</span><span>version</span><span>></span>1.0-SNAPSHOT<span></</span><span>version</span><span>></span><span><</span><span>properties</span><span>></span><span><</span><span>maven.compiler.source</span><span>></span>8<span></</span><span>maven.compiler.source</span><span>></span><span><</span><span>maven.compiler.target</span><span>></span>8<span></</span><span>maven.compiler.target</span><span>></span><span></</span><span>properties</span><span>></span><span><</span><span>dependencies</span><span>></span><span><</span><span>dependency</span><span>></span><span><</span><span>groupId</span><span>></span>net.java.dev.jna<span></</span><span>groupId</span><span>></span><span><</span><span>artifactId</span><span>></span>jna<span></</span><span>artifactId</span><span>></span><span><</span><span>version</span><span>></span>5.8.0<span></</span><span>version</span><span>></span><span></</span><span>dependency</span><span>></span><span><</span><span>dependency</span><span>></span><span><</span><span>groupId</span><span>></span>org.libvirt<span></</span><span>groupId</span><span>></span><span><</span><span>artifactId</span><span>></span>libvirt<span></</span><span>artifactId</span><span>></span><span><</span><span>version</span><span>></span>0.5.2<span></</span><span>version</span><span>></span><span></</span><span>dependency</span><span>></span><span><</span><span>dependency</span><span>></span><span><</span><span>groupId</span><span>></span>org.apache.logging.log4j<span></</span><span>groupId</span><span>></span><span><</span><span>artifactId</span><span>></span>log4j-core<span></</span><span>artifactId</span><span>></span><span><</span><span>version</span><span>></span>2.14.1<span></</span><span>version</span><span>></span><span></</span><span>dependency</span><span>></span><span><</span><span>dependency</span><span>></span><span><</span><span>groupId</span><span>></span>junit<span></</span><span>groupId</span><span>></span><span><</span><span>artifactId</span><span>></span>junit<span></</span><span>artifactId</span><span>></span><span><</span><span>version</span><span>></span>4.13.2<span></</span><span>version</span><span>></span><span><</span><span>scope</span><span>></span>test<span></</span><span>scope</span><span>></span><span></</span><span>dependency</span><span>></span><span></</span><span>dependencies</span><span>></span><span></</span><span>project</span><span>></span>
log4j2.xml:
<span><?</span>
<span>xml version="1.0" encoding="UTF-8"</span>
<span>?></span>
<span><!--</span>
<span>日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL </span>
<span>--></span>
<span><!--</span>
<span>Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出</span>
<span>--></span>
<span><!--</span>
<span>monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数</span>
<span>--></span>
<span><</span>
<span>configuration </span>
<span>status</span>
<span>="WARN"</span>
<span> monitorInterval</span>
<span>="30"</span>
<span>></span>
<span><!--</span>
<span>先定义所有的appender</span>
<span>--></span>
<span><</span>
<span>appenders</span>
<span>></span>
<span><!--</span>
<span>这个输出控制台的配置</span>
<span>--></span>
<span><</span>
<span>console </span>
<span>name</span>
<span>="Console"</span>
<span> target</span>
<span>="SYSTEM_OUT"</span>
<span>></span>
<span><!--</span>
<span>输出日志的格式</span>
<span>--></span>
<span><</span>
<span>PatternLayout </span>
<span>pattern</span>
<span>="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"</span>
<span>/></span>
<span></</span>
<span>console</span>
<span>></span>
<span></</span>
<span>appenders</span>
<span>></span>
<span><!--</span>
<span>然后定义logger,只有定义了logger并引入的appender,appender才会生效</span>
<span>--></span>
<span><</span>
<span>loggers</span>
<span>></span>
<span><</span>
<span>root </span>
<span>level</span>
<span>="all"</span>
<span>></span>
<span><</span>
<span>appender-ref </span>
<span>ref</span>
<span>="Console"</span>
<span>/></span>
<span></</span>
<span>root</span>
<span>></span>
<span></</span>
<span>loggers</span>
<span>></span>
<span></</span>
<span>configuration</span>
<span>></span>
LibvirtTest:(注释掉的都是运行时会报错的,坑比较多)
<span>import</span>
<span> org.apache.logging.log4j.LogManager;
</span>
<span>import</span>
<span> org.apache.logging.log4j.Logger;
</span>
<span>import</span>
<span> org.junit.Test;
</span>
<span>import</span>
<span> org.libvirt.Connect;
</span>
<span>import</span>
<span> org.libvirt.LibvirtException;
</span>
<span>public</span>
<span>class</span>
<span> LibvirtTest {
</span>
<span>private</span>
<span>static</span>
<span>final</span> Logger logger = LogManager.getLogger(LibvirtTest.<span>class</span><span>);
@Test
</span><span>public</span><span>void</span> test() <span>throws</span><span> LibvirtException {
Connect connect </span>= <span>new</span> Connect("qemu+tcp://172.16.20.17:16509/system", <span>true</span><span>);
</span><span>//</span><span> logger.info("连接到的宿主机的主机名:{}", connect.getHostName());</span>
logger.info("JNI连接的libvirt库版本号:{}"<span>, connect.getLibVirVersion());
</span><span>//</span><span> logger.info("连接的URI:{}", connect.getURI());</span>
logger.info("连接到的宿主机的剩余内存:{}"<span>, connect.getFreeMemory());
logger.info(</span>"连接到的宿主机的最大CPU:{}", connect.getMaxVcpus(<span>null</span><span>));
logger.info(</span>"hypervisor的名称:{}"<span>, connect.getType());
</span><span>int</span>[] ids =<span> connect.listDomains();
</span><span>for</span> (<span>int</span><span> id : ids) {
System.out.println(connect.domainLookupByID(id).getName());
}
</span><span>//</span><span> String[] domains = connect.listDefinedDomains();
</span><span>//</span><span> for (String domain : domains) {
</span><span>//</span><span> System.out.println(domain);
</span><span>//</span><span> }</span><span>
}
}</span>
后续
在 CentOS7 上正常使用64位 jdk,安装 libvirt,执行上面的函数注释是不会报错的,可能 libvirt 版本不一样也有关系吧
原文:https://www.cnblogs.com/nihaorz/p/15005820.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!