Java 开发设置
这节说明如何设置开发java客户端的开发环境。
主要包括以下内容:
■ Java 开发的各项要求
■ java 开发设置
■ 生成存根和编译类文件
■ 运行 SimpleClient 示例应用程序来验证设置
1. Java 开发的各项要求
使用 VMware vSphere Web Services SDK 开发 Java Web服务客户端应用需要 Java SDK 和Java Web 服务开发工具集。为了获得更好的支持,建议使用 J2SE 1.7.x,特别是JDK 1.7或更高版本。现在 J2SE1.8.x 也得到了支持。
Java Web 服务开发工具集必须是一个可以部署到 Tomcat 服务器上的 SOAP 实现。例如,可以使用 JAX-WS 2.1版本中的客户端库。JAX-WS 2.1 libraries 包含在JDK 1.7中。
也可以使用其他客户端工具和库,如 IBM WebSphere 和几个用vSphere Web Services SDK 开发的开源实现。这里只对 JAX-WS 客户端库进行了测试。
案例打包为一个 samples.jar 文件,里面包含所有的 vSphere Web Services SDK 示例。这些示例包括使用JAX-WS库生成的客户端存根类文件。使用 JAX-WS 的示例是使用 JDK 1.7 编译生成的。
注:如果你没有使用 JDK 1.7,那么必须使用 build.bat 文件在 Windows 上或者 build.sh 在 Linux 上,生成存根并编译示例文件(vim25.jar 和 samples.jar)。构建脚本会执行所有必要的任务,包括设置 CLASSPATH 和环境变量 PATH 。
查看生成存根并编译类以获得详细信息。
2. Java 开发设置
具体的设置取决于你的开发平台是否已经满足了一些或所有的要求,计划使用哪个客户端 Web 服务库,以及是否计划使用所提供的示例。
具体的设置也取决于你的目标服务器是用 HTTPS 还是 HTTP 协议。
2.1 VMware vSphere Web Services SDK 获取
■ VMware vSphere Web Services SDK 可从https://developercenter.vmware.com 获取.
它在 vSphere Management SDK 包里面。
2.2 使用 JAX-WS 开发的设置
用 JAX-WS libraries 和 JDK 1.7 编译生成的示例包含 vim25.jar 和 samples.jar 两个jar包。
如果你开发用的是相同版本的JDK,就无需重新编译了。
下面的设置说明假设目标服务器使用的是 HTTPS 协议,即默认的服务器配置。
对开发平台进行设置以使用 Java 和 JAX-WS :
安装 JDK 并为 vSphere Web Services SDK package 创建目录,注意目录不要含空格,此为避免一些包含 SDK 批处理和脚本文件而导致的问题。
安装 JavaSE 6.0版本以上,现在一般安装 JDK 时会自动安装 JavaSE。
将 SDK 组件解压到步骤 1 创建的子目录中。
(可选)导入服务器证书,并使用 Java keytool 实用工具创建一个vmware.keystore。 可查阅 导入服务器证书到 Java Keystore 细节.
作为可选项,在运行时传递 –ignorecert 参数,可忽略 Java 应用程序中的服务器证书验证。
设置 JAVAHOME 环境变量。此处不赘述。
如果你不能使用 run.bat 脚本运行Java示例,需添加预编译的示例文件vim25.jar 和 samples.jar到你的系统 CLASSPATH 环境变量。
2.2.1 编译和运行 Samples 的批处理文件和 Shell 脚本
vSphere Web Services SDK 包含若干个用于 Windows 的批处理文件和用于 Linux 的shell脚本,
这些文件便于sample应用程序的构建和运行。
一些批处理文件被其他批处理文件使用。如, build.bat 有调用 lcp.bat 和 clean.bat 脚本。
如果你修改了某个批处理文件,需注意和它有依赖关系的文件。
批处理文件和shell脚本如下:
![这里写图片描述](https://www.#.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNzI5MTM0NjI4MTg5Pw==)
2.2.2 导入服务器证书至 Java 秘钥
如果你打算使用 HTTPS 协议则需导入服务器证书,否则使用 –ignorecert 这个命令行参数忽略这一步骤。很明显,使用 HTTPS 协议可为生产环境提供更好的安全性。
JAVAHOME 环境变量是必须设置的,并将其添加至 PATH 环境变量里面。对于每个目标服务器的证书需位于 C:\VMware-Certs 子目录中。
查阅获取服务器证书。
导入证书至本地 Java Keystore步骤:
- 打开 Windows 命令窗口 或Linux shell 命令窗口;
为 Java 证书存储创建目录
仅创建目录,实际的 keystore 秘钥文件 vmware.keystore 在导入证书时创建。
![这里写图片描述](https://www.#.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNzI5MTQwNzAxODEyPw==)
命令窗口切换当前目录;
如 Windows 为:cd vmware-certs\vmware
使用 Java keytool 工具导入证书;
语法如下:
keytool -import -trustcacerts -alias root -file root.cer -keystore keystore.jks
然后会出现要求设置密码的提示:
Enter keystore password:
5. 为 keystore 秘钥创建一个密码,在提示后面输入;
秘钥工具在控制台显示了证书信息,如:
Owner:OID.1.2.840.113549.1.9.2="1183400896,564d7761726520496e632e", CN=sdkpubslab-01.vmware.com,
EMAILADDRESS=ssl-certificates@vmware.com, OU=VMware ESX Server Certificate, O="VMware, Inc.",
L=Palo Alto, ST=California, C=US Issuer: OID.1.2.840.113549.1.9.2="1183400896,564d7761726520496e632e",
CN=sdkpubslab-01.vmware.com, EMAILADDRESS=ssl-certificates@vmware.com, OU=VMware ESX Server Certificate,
O="VMware, Inc.", L=Palo Alto, ST=California, C=US Serial number: 0 Valid
from: Mon Jul 02 11:28:17 PDT 2007 until: Mon Aug 31 11:28:17 PDT 2026
Certificate fingerprints:
MD5: . . .61:35:C0:C4
SHA1: 4C:...78:B2
在证书信息最后,会显示一个请求提示,以确认该证书是可信的:
Trust this certificate? [no]:
6. 输入 yes, 回车确认,导入证书至 vmware.keystore keystore;
控制台显示下面的信息:
Certificate was added to keystore
7. 为每个目标服务器重复 4~6 步骤。
3. 生成存根和编译类文件
vSphere Web Services SDK 包括一系列的示例程序的 Java 存档文件,
sample .jar 是使用 JDK 1.7 和 JAX-WS Web 服务库创建的。
3.1 预编译 JAX-WS 示例
JAX-WS samples 包括由 JDK 1.7 内含的 JAX-WS 库创建的vim25.jar 和 samples.jar 文件,
文件位于 %WS_SDK_HOME%\java\JAX-WS\lib 目录。
如果你的开发环境使用的是 jax-ws 库和 JDK 1.7,那么你可以直接使用这些预编译库文件。
3.2 使用 Build 脚本
如果你的开发环境使用的是和预编译 samples 不同的 JDK 版本或客户端库,那么你必须重新生成客户端存根,并重新编译它们,以创建Java存档文件。
在SDK中包含的 build.bat 或 build.sh 脚本可以为你执行所有必要的任务。
用 build.bat 或 build.sh 脚本生成存根和编译文件步骤:
打开命令提示符窗口;
切换至 build.bat 或 build.sh 文件所在目录;
cd %WS_SDK_HOME%\java\JAX-WS\
运行 build.bat (或 build.sh) 文件;
控制台将显示输出,首先是从 wsdl 生成存根。几分钟后运行完成, Done 出现在命令提示符,从 wsdl 生成存根的消息会出现两次,因为此构建文件使用两组 WSDL 声明生成客户端存根,在 \vim 和\vim25 可以找到。
例:用 build.bat (或 build.sh) 文件成功生成存根和编译
![这里写图片描述](https://www.#.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNzI5MTUwOTE5MDgzPw==)
当流程结束时,恰当的 sample .jar 文件显示当前日期和时间。
如果不需要从 WSDL 重新生成存根,可用 -w 标志 build 脚本,如:
build -w
4. 运行 SimpleClient 示例应用程序来验证设置
可以通过运行一个示例应用程序来测试你的设置和连接,如SimpleClient。
SimpleClient 是一个连接到服务器的Java类,并获得顶级清单实体、它们的属性和引用的一览表。
如果你使用 JAX-WS 生成的存根,这些脚本需要先设置 JAVAHOME 环境变量。
使用提供的脚本运行一个示例应用
使用 run.bat 或 run.sh 脚本可运行任何 Java 示例。SimpleClient 就是一个不错的验证设置是否正确的示例应用,
SimpleClient 的源文件路径为:
%WS_SDK_HOME%\java\JAXWS\samples\com\vmware\general\SimpleClient.java
当运行脚本时,为示例应用程序指定的 Java 类文件加上 –url, –username 和 –password 在命令行切换,
在Java类规范中包含完整的包名。
下面的语句展示了使用 run.bat 脚本执行 SimpleClient 示例应用程序(在JAX-WS 中Java sample 目录中)的一般格式。
run.bat com.vmware.samples.general.SimpleClient --url https://yourFQDNservername/sdk
--username username --password password [--ignorecert ignorecert]
示例:一个使用预编译的Java示例成功运行 SimpleClient 示例应用的输出:
Object Type : Folder
Reference Value : ha-folder-vm
Property Name : name
Property Value : vm
Object Type : HostSystem
Reference Value : ha-host
Property Name : name
Property Value : sdkpubslab-02.eng.vmware.com
Object Type : ResourcePool
Reference Value : ha-root-pool
Property Name : name
Property Value : Resources
Object Type : Folder
Reference Value : ha-folder-host
Property Name : name
Property Value : host
Object Type : ComputeResource
Reference Value : ha-compute-res
Property Name : name
Property Value : sdkpubslab-02.eng.vmware.com
Object Type : VirtualMachine
Reference Value : 16
Property Name : name
Property Value : Windows_2K3_VM
...
Object Type : Datacenter
Reference Value : ha-datacenter
Property Name : name
Property Value : ha-datacenter
Object Type : Folder
Reference Value : ha-folder-root
Property Name : name
Property Value : ha-folder-root
从命令提示符运行预编译的 SimpleClient 步骤:
打开 Windows 命令窗口 或Linux shell 命令窗口;
切换至 Java samples 目录;
cd %WS_SDK_HOME%\java\JAXWS\samples
调用 Java runtime,提供 SimpleClient 应用的完整包名、服务器URN、凭证和 Java keystore 密钥库位置或者用 –ignorecert 参数忽略证书。完整的语法如下:
java -Djavax.net.ssl.trustStore=keystore-path-or-%KEYSTORE%-environment-variable
package-hierarchy-classname --url server-url --username username
--password password [--ignorecert ignorecert]
示例:
java -Djavax.net.ssl.trustStore=%VMKEYSTORE% com.vmware.general.SimpleClient
--url https://example.com/sdk --username pubs --password *** --ignorecert ignorecert
注:如果由于系统堆或其他内存问题而出现错误消息,则可以给 Java VM 更多内存,如下:
java -Djavax.net.ssl.trustStore=%VMKEYSTORE% -Xms512M -Xmx1024M com.vmware.general.SimpleClient
https://sdkpubslab-02.eng.vmware.com/sdk --username username --password password
--ignorecert ignorecert
原文:
VMware vSphere 6.5 Documentation Center:
Setting Up for Java Development