如何使用VMware vSphere Web Service SDK6.0开发自己的功能(一)之登录vCenter server

1、前期准备

1.1 从VMware vSphere官网下载SDK,并解压,得到一个SDK的文件夹。

1.2 使用idea新建项目,这里以CSDN为例,然后新建一个module,这里为Demo为例。为Demo模块新建一个文件夹,名为lib,在解压后的目录下找到vsphere-ws\java\JAXWS\lib,将所有jar包复制到Demo下的lib目录,并将lib目录设置为依赖库。

2、开始编码

2.1 使用idea打开lib/samples-core-1.0.0.jar/Main,这里idea会提示是否反编译,选择OK,将其中的main、trustAll、findConfigurationFiles、propertyFileNames、scanForPropertyFiles、findPropertiesFile、checkForProperties等方法复制,并并作一定的修改,实际如下

package com.csdn;

import com.vmware.common.samples.SystemParameters;
import com.vmware.common.ssl.TrustAll;

import java.io.File;
import java.io.FilenameFilter;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class Main {

    public static void trustAll() throws NoSuchAlgorithmException, KeyManagementException {
        TrustAll.trust();
    }

    public static void main(String[] args) throws Throwable {
        SystemParameters systemParameters;
        systemParameters = SystemParameters.parse(findConfigurationFiles());
        Iterator i$ = systemParameters.parameterNames().iterator();
        while (i$.hasNext()) {
            String propName = (String) i$.next();
            String value = systemParameters.get(propName);
            System.setProperty(propName, value);
        }
        trustAll();

    }


    private static File[] findConfigurationFiles() {
        LinkedList<File> files = new LinkedList<>();
        String[] arr = propertyFileNames();

        for (String fileName : arr) {
            try {
                List<File> e = findPropertiesFile(fileName.replaceAll("(^\\s+|\\s+$)", ""));
                files.addAll(e);
            } catch (URISyntaxException var6) {
                var6.printStackTrace();
            }
        }

        return files.toArray(new File[files.size()]);
    }


    public static String[] propertyFileNames() {
        String specified = System.getProperty("sample.properties.files");
        return specified != null && !"".equals(specified) ? specified.split("\\s*,\\s*") : scanForPropertyFiles();
    }


    public static String[] scanForPropertyFiles() {
        File[] files = (new File(".")).listFiles(new FilenameFilter() {
            public boolean accept(File file, String s) {
                return s.endsWith(".properties");
            }
        });
        String[] names = new String[files.length];

        for (int i = 0; i < names.length; ++i) {
            names[i] = files[i].getName();
        }

        return names;
    }


    public static List<File> findPropertiesFile(String fileName) throws URISyntaxException {
        if (null != fileName && fileName.length() != 0) {
            LinkedList<File> files = new LinkedList<>();
            URL resourceUrl = Main.class.getResource(fileName);
            if (resourceUrl != null) {
                URI workingDir = resourceUrl.toURI();
                files.add(new File(workingDir));
            }

            File workingDir1 = new File(".");
            checkForProperties(workingDir1, fileName, files);
            File homeDir = new File(System.getProperty("user.home"));
            checkForProperties(homeDir, fileName, files);
            return files;
        } else {
            return new LinkedList<>();
        }
    }


    private static void checkForProperties(File dir, String fileName, List<File> files) {
        File file = new File(dir, fileName);
        if (file.exists() && file.canRead()) {
            files.add(file);
        }
    }
}

2.2、复制SDK\vsphere-ws\java\JAXWS\samples\com\vmware\connection目录到Demo模块中,注意修改包名。具体如下图所示

2.3、新建Connect类,并继承ConnectedVimServiceBase类。

package com.csdn;

import com.csdn.connection.ConnectedVimServiceBase;

public class Connect extends ConnectedVimServiceBase {
    public Connect(String url, String userName, String password) {
        connection.setUrl(url);         //这里的url格式为https://vcenterip/sdk
        connection.setUsername(userName);   //vcenter的用户名
        connection.setPassword(password);  //对应的密码
        connection.connect();

        //检查是否登录成功
        System.out.println(connection.getServiceContent().getAbout().getInstanceUuid());
    }
}

2.4、在Main类新建一个connect对象就可以了。

3、编译运行

将SDK\vsphere-ws\java\JAXWS\connection.properties和SDK\vsphere-ws\java\JAXWS\logging.properties复制到上图Working directory目录下,编译运行就能看到执行结果了。项目已经放在GitHub上了,地址为https://github.com/wulikanhua/CSDN

执行结果

猜你喜欢

转载自blog.csdn.net/u013385554/article/details/81612774