zoukankan      html  css  js  c++  java
  • libvirt 启用TCP远程连接,windows平台java调用示例

    1、开启TCP连接

    编辑 /etc/libvirt/libvirtd.conf,去掉 listen_tls = 0listen_tcp = 1tcp_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 版本不一样也有关系吧

  • 相关阅读:
    word删除脚注的方法
    移动最小二乘
    word插入的对象和文字混合到了一起的解决办法
    插值
    中学小学学校学生德育量化管理系统_文明班评比量化系统_德育评价系统_德育量化考核系统_政教管理系统_政教考核系统
    需求的最初形式:12306ng的需求小说
    异步javascript的原理和实现
    需求与设计过程(1)用例
    项目管理沙龙第十二次会议纪要为没有共识的项目组定制敏捷方法
    项目进度控制的技术
  • 原文地址:https://www.cnblogs.com/nihaorz/p/15005820.html
Copyright © 2011-2022 走看看