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 版本不一样也有关系吧

  • 相关阅读:
    Java RunTime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. ......
    UVA 1597 Searching the Web
    UVA 1596 Bug Hunt
    UVA 230 Borrowers
    UVA 221 Urban Elevations
    UVA 814 The Letter Carrier's Rounds
    UVA 207 PGA Tour Prize Money
    UVA 1592 Database
    UVA 540 Team Queue
    UVA 12096 The SetStack Computer
  • 原文地址:https://www.cnblogs.com/nihaorz/p/15005820.html
Copyright © 2011-2022 走看看