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
执行结果