当前位置:首页 > 操作系统 > Windows

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:<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)!

相关教程推荐

其他课程推荐