Loading... > 转载自:https://www.cnblogs.com/nihaorz/p/15005820.html # [libvirt 启用TCP远程连接,windows平台java调用示例](https://www.cnblogs.com/nihaorz/p/15005820.html) ## 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://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe ``` ## 3、新建 maven 项目进行 java sdk 调用(必须装32位的jdk,64位的会有问题) pom.xml: ``` <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>libvirt-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.8.0</version> </dependency> <dependency> <groupId>org.libvirt</groupId> <artifactId>libvirt</artifactId> <version>0.5.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.14.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> </project> ``` log4j2.xml: ``` <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--> <configuration status="WARN" monitorInterval="30"> <!--先定义所有的appender--> <appenders> <!--这个输出控制台的配置--> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </console> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <root level="all"> <appender-ref ref="Console"/> </root> </loggers> </configuration> ``` LibvirtTest:(注释掉的都是运行时会报错的,坑比较多) ``` import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Test; import org.libvirt.Connect; import org.libvirt.LibvirtException; public class LibvirtTest { private static final Logger logger = LogManager.getLogger(LibvirtTest.class); @Test public void test() throws LibvirtException { Connect connect = new Connect("qemu+tcp://172.16.20.17:16509/system", true); // logger.info("连接到的宿主机的主机名:{}", connect.getHostName()); logger.info("JNI连接的libvirt库版本号:{}", connect.getLibVirVersion()); // logger.info("连接的URI:{}", connect.getURI()); logger.info("连接到的宿主机的剩余内存:{}", connect.getFreeMemory()); logger.info("连接到的宿主机的最大CPU:{}", connect.getMaxVcpus(null)); logger.info("hypervisor的名称:{}", connect.getType()); int[] ids = connect.listDomains(); for (int id : ids) { System.out.println(connect.domainLookupByID(id).getName()); } // String[] domains = connect.listDefinedDomains(); // for (String domain : domains) { // System.out.println(domain); // } } } ``` ## 后续 在 CentOS7 上正常使用64位 jdk,安装 libvirt,执行上面的函数注释是不会报错的,可能 libvirt 版本不一样也有关系吧 最后修改:2022 年 01 月 04 日 02 : 40 PM © 转载自他站 赞赏 要多恰饭才能长胖 赞赏作者 支付宝微信
3 条评论
测试评论3
测试评论2
测试评论