<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DoubleCloud.org &#187; vSphere API</title>
	<atom:link href="http://www.doublecloud.org/category/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.doublecloud.org</link>
	<description>Cutting Edge Technologies to Build DoubleCloud (Private + Public Clouds) with Virtualization</description>
	<lastBuildDate>Wed, 08 Feb 2012 17:06:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Announcing Code Generator For vSphere Java API</title>
		<link>http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/</link>
		<comments>http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 08:12:06 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[code generation]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2836</guid>
		<description><![CDATA[As I tweeted last week, there would be a big announcement when the open source VI Java API gets 20,000 downloads. It hit target yesterday. To celebrate it, I decide to release the code generator for the API, which William (@lamw) rated as “awesome.” If you have used Onyx for generating PowerCLI code before, you [...]<p><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/">Announcing Code Generator For vSphere Java API</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>As I tweeted last week, there would be a big announcement when the open source <a href="http://vijava.sf.net" target="_blank">VI Java API</a> gets 20,000 downloads. It hit target yesterday. To celebrate it, I decide to release the code generator for the API, which William (<a href="http://twitter.com/lamw" target="_blank">@lamw</a>) rated as “awesome.”</p>
<p>If you have used Onyx for generating PowerCLI code before, you can think it as Java version of Onyx. Even better, it generates complete Java code which is ready to run once you supply the URL, username, and password. It’s so easy that from now on, all the system administrators have no excuse for not trying open source vSphere Java API. <img src='http://www.doublecloud.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>At its heart, the code generator is a reversed proxy which sits between a vSphere Client and vCenter or ESX(i) server, and intercepts the SOAP XML messages. With the XML messages, I designed the algorithm to automatically generate the Java code based on the open source Java API code.</p>
<p>Unlike Onyx, the Java code generator provides richer GUI which allows you to:</p>
<ul>
<li>Record both the requests and responses.</li>
<li>Sort the recorded messages in any order.</li>
<li>Generate complete code of any selected requests.</li>
<li>Save recorded messages to a local file, and read it back later.</li>
<li>Support raw HTTP data, XML, Java simultaneously in different tabs.</li>
</ul>
<p>Although the generator supports only Java today, I did designed it to be extensible architecture for other languages like Jython, JRuby, Perl, etc. When I have time, I will continue to work on these in the future.</p>
<p>Too much talk? Let’s take a peek at a few screenshots in <a href="http://www.doublecloud.org/doublecloud-proxy/" target="_blank">this page</a> which includes download link and getting started tutorial. Shorter than my 5 minute VI Java API tutorial, it should be less than one minute this time.</p>
<p>Hope you enjoy the tool and let me how you like it.</p>
<p><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/">Announcing Code Generator For vSphere Java API</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2011/02/how-to-set-up-proxy-with-vi-java-api/" title="How to Set Up Proxy With VI Java API?">How to Set Up Proxy With VI Java API?</a></li><li><a href="http://www.doublecloud.org/2010/02/automatically-generate-your-java-code-with-onyx/" title="Automatically Generate Your Java Code With Onyx?">Automatically Generate Your Java Code With Onyx?</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li><li><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" title="VI Java API 5.0 GA Released">VI Java API 5.0 GA Released</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Why vSphere PropertyCollector Is Hard By Design?</title>
		<link>http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/</link>
		<comments>http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 05:01:21 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[propertycollector]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2797</guid>
		<description><![CDATA[If you’ve had a chance to use vSphere Web Service SDK, you must know the PropertyCollector is very hard to use. It takes a newcomer quite some time to learn how to use it, and even more time to learn to use it effectively. Luckily, you no longer have to if you use the open source [...]<p><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/">Why vSphere PropertyCollector Is Hard By Design?</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>If you’ve had a chance to use vSphere Web Service SDK, you must know the <a href="http://vijava.sourceforge.net/vSphereAPIDoc/ver5/ReferenceGuide/vmodl.query.PropertyCollector.html" target="_blank">PropertyCollector</a> is very hard to use. It takes a newcomer quite some time to learn how to use it, and even more time to learn to use it effectively. Luckily, you no longer have to if you use the open source <a href="http://vijava.sf.net/" target="_blank">vSphere Java API (a.k.a. vijava)</a> because it has encapsulated the PropertyCollector behind these newly added getter methods of the managed object types.</p>
<p>Still, a question has lingered in my mind for a while: “Why was the PropertyCollector designed to be hard?” If you have a similar question, this article is for you. Note that this is just my own thoughts. Hope it offers a good explanation, and more importantly you can learn from it for your future designs.</p>
<p>Although vCenter and ESX/ESXi have implemented the same API interfaces, the vSphere API is mainly for vCenter and heavily influenced by vCenter. Functionality wise, vCenter supports almost all the APIs, while ESX/ESXi does part of them. It’s not strictly superset/subset relationship but pretty close.</p>
<p>As you know, the vCenter is built on top of relational databases, either Oracle or Microsoft SQL Server. With the vFabric Data Director and vPostgress, we can expect Postgress to be used. Why? According to Paul Maritz, you got to eat your own dog food.</p>
<p>So vCenter is a database centric application in server form. What does it really mean? At a high level, the managed object types are mapped to tables in the database; managed object instances to records; properties to fields. The <a href="http://www.doublecloud.org/2011/06/managedobjectreference-vs-managedobject/" target="_blank">ManagedObjectReference</a> includes both type (table) and value (primary key). Secondly, different threads in vCenter share information via database.</p>
<p>With that in mind, the PropertyCollector is really an interface to the database retrieving different tables (managed object types) and their fields (properties). It’s very natural to design something like PropertyCollector, a single type that is responsible for getting all properties of all managed objects. Also with SOAP Web Services, it does not make much sense (check out the <a href="http://msdn.microsoft.com/en-us/library/ff649585.aspx" target="_blank">data transfer object design pattern</a>) to provide numerous getters, each of which corresponds to a property.</p>
<p>While the single type making sense, the interface design can be improved however. The most common use case of PropertyCollector is to retrieve a property from a managed object. With the existing interfaces, you got to work with several data objects to specify what you want. It of course works but isn’t easy to use. Ideally it should have included a simple interface as follows:</p>
<pre class="brush: java; title: ; notranslate">Object getProperty(ManagedObjectReference obj, String propName)</pre>
<p>This simple property retrieval is, however, not the most common usage of PropertyCollector in vSphere Client which has been the first and still the most important application built on top of vSphere API. This is yet another reason why the PropertyCollector is hard to use – its major application vSphere Client has different requirements that have been satisfied, therefore there hasn’t been enough incentives to improve the design.</p>
<p>Now, how to bridge the gap? I think the open source vSphere Java API has demonstrated a good approach. Should you be interested in how, you can check out the code. The architecture is designed so that other distributed system can leverage it as well. So you may still find it useful even if you are not using VMware vSphere.</p>
<p><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/">Why vSphere PropertyCollector Is Hard By Design?</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/" title="One More Secret About Session Management in vSphere">One More Secret About Session Management in vSphere</a></li><li><a href="http://www.doublecloud.org/2011/09/fixed-a-bug-in-client-rest-api/" title="Fixed a Bug in Client REST API">Fixed a Bug in Client REST API</a></li><li><a href="http://www.doublecloud.org/2011/08/workaround-vsphere-java-api-with-java-web-start/" title="Workaround: vSphere Java API with Java Web Start">Workaround: vSphere Java API with Java Web Start</a></li><li><a href="http://www.doublecloud.org/2011/06/moving-virtual-machine-back-from-distributed-virtual-switch/" title="Moving Virtual Machine Back From Distributed Virtual Switch">Moving Virtual Machine Back From Distributed Virtual Switch</a></li><li><a href="http://www.doublecloud.org/2011/06/is-serverguid-attribute-really-needed-in-vsphere/" title="Is serverGuid Attribute Really Needed in vSphere?">Is serverGuid Attribute Really Needed in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/06/managedobjectreference-vs-managedobject/" title="ManagedObjectReference vs ManagedObject">ManagedObjectReference vs ManagedObject</a></li><li><a href="http://www.doublecloud.org/2011/06/most-used-api-in-vsphere/" title="Most Used API in vSphere">Most Used API in vSphere</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What Roles Does A User Have in vSphere?</title>
		<link>http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/</link>
		<comments>http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 06:00:30 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2724</guid>
		<description><![CDATA[If you have read my previous article on vSphere security model, you know how it works. Still, you may wonder what roles a particular user may have, as asked in a recent email from one of my former VMware colleagues. In an operating system, a user is assigned to a group or multiple groups therefore [...]<p><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/">What Roles Does A User Have in vSphere?</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>If you have read my previous article on <a href="http://www.doublecloud.org/2010/04/introducing-security-model-of-vmware-vsphere/">vSphere security model</a>, you know how it works. Still, you may wonder what roles a particular user may have, as asked in a recent email from one of my former VMware colleagues.</p>
<p>In an operating system, a user is assigned to a group or multiple groups therefore granted a certain permissions. In vSphere, a role is simply a set of privileges and that is it. It’s natural to think of a role as a group sometimes, but it’s really not.</p>
<p>Generally speaking, there is no generic roles for a user to have, but always under a scope of what entity alone or plus its descendants in the inventory tree.</p>
<p>The following screenshot from <a href="http://www.doublecloud.org/2010/02/a-little-known-secret-of-vsphere-managed-object-browser/">MOB</a> should explain more. As you can see, a <em>Permission</em> object always has entity while associating user with a role. The propagate field indicates whether the entity’s descendants are covered as well.</p>
<p><a href="http://www.doublecloud.org/wp-content/uploads/2011/11/vsphere_permission_in_mob.png"><img class="aligncenter size-full wp-image-2725" title="vsphere_permission_in_mob" src="http://www.doublecloud.org/wp-content/uploads/2011/11/vsphere_permission_in_mob.png" alt="" width="635" height="207" /></a></p>
<p>With that being clarified, you can check what roles a user has on a managed entity. To get that information, you can call the <em>retrieveEntityPermissions</em>() of the AuthorizationManager managed object type. Note that you need to pass in a managed entity or its <a href="http://www.doublecloud.org/2011/06/managedobjectreference-vs-managedobject/">ManagedObjectReference</a> as parameter. Optionally, you can use the <em>retrieveAllPermissions</em>() method assuming you want to filter through all the returned Permission objects by yourself.</p>
<p>Now, this is not yet the end of the problem. What if as shown above, the principle is actually a group (indicated by the group field in Permission)? In that case, your ID may not show up in any of the <em>Permission</em> objects. How would you know you are part of one of the groups?</p>
<p>The answer is no if you only look at vSphere itself. You want to look it up from the AD of your domain. It is not that difficult by the way. On your computer running vSphere Client, just type in the following command in a DOS console:</p>
<pre>&gt; gpresult /X myGroup.xml</pre>
<p>Then you will find your group information in the XML file. It’s too long to be list here, but you can easily try it out by yourself.</p>
<p>With these two piece of information, you can figure out what roles, if any, a user has over an entity in the inventory hierarchy.</p>
<p><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/">What Roles Does A User Have in vSphere?</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2011/05/tech-talk-automating-security-in-dynamic-virtual-environments/" title="Tech Talk: Automating Security in Dynamic Virtual Environments">Tech Talk: Automating Security in Dynamic Virtual Environments</a></li><li><a href="http://www.doublecloud.org/2011/02/enable-disable-copy-paste-remote-vm-console/" title="How to Enable or Disable Copy and Paste to Remote VM Console?">How to Enable or Disable Copy and Paste to Remote VM Console?</a></li><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li><li><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" title="VI Java API 5.0 GA Released">VI Java API 5.0 GA Released</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Discontinuous Response Stream from vSphere</title>
		<link>http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/</link>
		<comments>http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 06:47:20 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2719</guid>
		<description><![CDATA[Last month a question was raised in our open source vSphere Java API forum regarding an exception during HostSystem.getSummary() method call. As you can see from the stack trace, the actual exception was “org.dom4j.DocumentException.” java.lang.RuntimeException: java.rmi.RemoteException: VI SDK invoke exception:org.dom4j.DocumentException: null Nested exception: null         at com.vmware.vim25.mo.ManagedObject.retrieveObjectProperties(ManagedObject.java:158)         at com.vmware.vim25.mo.ManagedObject.getCurrentProperty(ManagedObject.java:179)         at com.vmware.vim25.mo.HostSystem.getSummary(HostSystem.java:96) caused by: java.rmi.RemoteException: [...]<p><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/">Discontinuous Response Stream from vSphere</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>Last month a question was raised in our <a href="http://vijava.sourceforge.net/forum.php">open source vSphere Java API forum</a> regarding an exception during <em>HostSystem.getSummary()</em> method call. As you can see from the stack trace, the actual exception was “org.dom4j.DocumentException.”</p>
<blockquote>
<pre>java.lang.RuntimeException: java.rmi.RemoteException: VI SDK invoke exception:org.dom4j.DocumentException: null Nested exception: null
        at com.vmware.vim25.mo.ManagedObject.retrieveObjectProperties(ManagedObject.java:158)
        at com.vmware.vim25.mo.ManagedObject.getCurrentProperty(ManagedObject.java:179)
        at com.vmware.vim25.mo.HostSystem.getSummary(HostSystem.java:96)
caused by: java.rmi.RemoteException: VI SDK invoke exception:org.dom4j.DocumentException: null Nested exception: null
        at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:182)
        at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:124)
        at com.vmware.vim25.ws.VimStub.retrieveProperties(VimStub.java:77)
        at com.vmware.vim25.mo.PropertyCollector.retrieveProperties(PropertyCollector.java:107)
        at com.vmware.vim25.mo.ManagedObject.retrieveObjectProperties(ManagedObject.java:155)
        ... 9 more</pre>
</blockquote>
<p>Thanks to the reporter PC Varma who actually debugged the issue, he found the root cause of the problem was discontinuous response stream that fails the dom4j XML parser. Even better, he offered a quick fix to the problem. Instead of feeding the response stream directly to the parser, just read it to a string buffer and then feed the string to the parser. The environment as reported is vCenter 4.1.0 build 258902. Should you get into similar issue and want a workaround, you can take a look the fix PC provided in <a href="http://sourceforge.net/projects/vijava/forums/forum/826592/topic/4751527">the discussion thread</a>.</p>
<p>Given that this is the only incident I&#8217;ve heard so far, the fix is not taken into the trunk. More importantly, the fix has performance implications. If you followed closely what I did in 2.0 beta, I first used the same approach but later on changed to the current implementation, which is feeding the response stream directly to the parser. The reason is rather simple: while waiting for coming bytes from the server, the parser can parse the received ones. In so doing, we basically get the parsing for free, or close to free.</p>
<p>Performance wise, the open source Java API is way ahead (10x times as reported) of other approaches for the moment. So we have enough room to revert back to the slower approach if really needed. If you get into similar issue, please don’t hesitate to report it. I need your feedbacks on this.</p>
<p><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/">Discontinuous Response Stream from vSphere</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/lessons-learned-from-troubleshooting-my-new-pc/" title="Lessons Learned From Troubleshooting My New PC">Lessons Learned From Troubleshooting My New PC</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li><li><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" title="VI Java API 5.0 GA Released">VI Java API 5.0 GA Released</a></li><li><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/" title="One More Secret About Session Management in vSphere">One More Secret About Session Management in vSphere</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Future of VI Java API and How You can Help</title>
		<link>http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/</link>
		<comments>http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 06:07:29 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2655</guid>
		<description><![CDATA[Upon hearing about my leaving VMware, quite a few members in the community sent me emails or tweets asking about the future of the API. Most of them have built products or automation scripts using the API, therefore would like to see the continuous success of the open source project. I am sure there will [...]<p><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/">The Future of VI Java API and How You can Help</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>Upon hearing about <a href="http://www.doublecloud.org/2011/10/moving-on/">my leaving VMware</a>, quite a few members in the community sent me emails or tweets asking about the future of the API. Most of them have built products or automation scripts using the API, therefore would like to see the continuous success of the open source project. I am sure there will be more inquiries coming without this post.</p>
<p>As it stands today, I do plan to maintain the project in the future, mainly upgrading the API to the latest and greatest future vSphere releases. If my time allows, I would also like to enhance the APIs in the following areas: [Note: all these should not be interpreted as a commitment; contact me otherwise.]</p>
<ol>
<li>Continue the high level abstraction as <a href="http://www.doublecloud.org/2010/08/vsphere-java-api-3-0-kicks-off-code-name-crescendo/" target="_blank">I laid out in the VI Java API Crescendo release</a>. A small part of the abstraction had been included in <a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" target="_blank">version 5</a> (Have you noticed it? BTW). But we still have a long way to go before we can match PowerCLI on the task oriented abstraction. Again, we will not re-implement PowerCLI in VI Java API, but would make it significantly easier to achieve similar tasks. After all, API is NOT command line or scripting; otherwise it’s wrong. I will blog about this more about the differences and how they should be related to each other.</li>
<li>Expand to other VMware APIs. It’s no doubt that vSphere APIs is, and I think continues to be in foreseeable future, the most important APIs from VMware. As VMware continues to innovate, many other important APIs will come up. It would nice if there is a unified API that works across different product lines. It’s more than simple addition of API calls, but an aggregated APIs among which you can navigate from one to another. The one on top of my head is the <a href="http://www.doublecloud.org/2010/09/object-model-of-vmware-vcloud-api-the-big-picture-in-2-minutes/" target="_blank">vCloud API</a>. Please feel free to name others you want the first in your comment.<br />
Early this year, I made a presentation proposal to talk about interoperability of VMware APIs. Better than a talk, this expansion, if done right, would give you real APIs to work with. As ambitious as it may seem, it’s indeed not an easy project, let alone the amount of work.</li>
<li>Support other open source hypervisors like <a href="http://xen.org/" target="_blank">XEN</a>, <a href="http://www.linux-kvm.org/page/Main_Page" target="_blank">KVM</a>. This was actually my vision for the project I had two years ago. I believe a unified API to manage all hypervisors would be very helpful for the customers, and in particular for partners who want to write once and integrate with all.<br />
As I found out after studying some of the management APIs, the biggest challenge is to come up with a common object model that makes sense for all the hypervisors. Given that each hypervisor has its different object model and even different naming, this effort may result in a least denominator of the existing object models. In my estimation, the least denominator would most likely equate to the vCloud API level abstraction.</li>
</ol>
<p>To achieve these, I would like to get helps from the community, and companies as well:</p>
<ol>
<li>Development/build/test environment, including hardware/software. It doesn’t need to be big, but good enough for the project. If it’s an environment accessible remotely, that would work too, probably even better.</li>
<li>Advisory board. I would like to invite experts who would agree to give meaningful help on regular basis (quarterly or bi-yearly, TBD) in many different areas, from project direction, user feedbacks, technology, etc.</li>
<li>Contribution, including coding, documenting, evangelism, etc.</li>
</ol>
<p>Should you be interested in helping the project or referring others, please leave a comment or contact me: sjin2008 at users dot sf dot net.</p>
<p><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/">The Future of VI Java API and How You can Help</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" title="VI Java API 5.0 GA Released">VI Java API 5.0 GA Released</a></li><li><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/" title="One More Secret About Session Management in vSphere">One More Secret About Session Management in vSphere</a></li><li><a href="http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/" title="Escaping Characters for SOAP XML: Late But Here">Escaping Characters for SOAP XML: Late But Here</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>VI Java API 5.0 GA Released</title>
		<link>http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/</link>
		<comments>http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 03:47:47 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2623</guid>
		<description><![CDATA[It’s been one plus month since I pushed out the beta code which has since been downloaded more than 700 times. As promised, I am happy to announce the GA of VI Java API 5.0 today. This is the fourth major release after 1.0, 2.0, and 2.1 which are all shipped on time. Predictability is [...]<p><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/">VI Java API 5.0 GA Released</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>It’s been one plus month since I pushed out the beta code which has since been downloaded more than 700 times. <a href="http://www.doublecloud.org/2011/08/announcing-vi-java-api-5-0-beta/">As promised</a>, I am happy to announce the GA of VI Java API 5.0 today. This is the fourth major release after 1.0, 2.0, and 2.1 which are all shipped on time. Predictability is important for commercial products, even so for open source projects like this. I think we’ve demonstrated it in the past three and half years since the first release in May 2008.</p>
<p>As mentioned in beta announcement, I’ve decided to jump the number to 5.0 to better align with vSphere versioning which is now 5.0. I expect to sync up with future vSphere releases in both features and version numbers.</p>
<p>Now, let’s get to the technical side: what’s fixed from beta? Here are several of them:</p>
<ul>
<li>Bug <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3042167&amp;group_id=228007&amp;atid=1073396">3042167</a>: xml characters not escaped.</li>
<li>Bug <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3406597&amp;group_id=228007&amp;atid=1073396">3406597</a>: Broken UTF-8 handling in WSClient class</li>
<li>Bug <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=3400964&amp;group_id=228007&amp;atid=1073396">3400964</a> API is missing  the type ArrayOfDatastoreEventArgument</li>
<li>Bug <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3405278&amp;group_id=228007&amp;atid=1073396">3405278</a> Client REST API breaks with vSphere 4.1 u1</li>
</ul>
<p>I would like to thank my manager Rich Hogan for sponsoring some of my time to work on this release, VMware product management Mahesh Ramachandran and Tsun Tsun Ho for their support, and several internal and external teams who helped to give me many feedbacks and try the alpha and beta code.</p>
<p>Thanks also go to our community who has been very supportive and by trying the API, reporting bugs, and helping each other in the community forum. This is really encouraging experience for me.</p>
<p>Ready to give 5.0 a try? Check it out <a href="http://vijava.sf.net/">here</a>.</p>
<p><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/">VI Java API 5.0 GA Released</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li><li><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/" title="One More Secret About Session Management in vSphere">One More Secret About Session Management in vSphere</a></li><li><a href="http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/" title="Escaping Characters for SOAP XML: Late But Here">Escaping Characters for SOAP XML: Late But Here</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>One More Secret About Session Management in vSphere</title>
		<link>http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/</link>
		<comments>http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 05:44:45 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2620</guid>
		<description><![CDATA[Session management is a very important part of vSphere management, especially when scalability is involved. I’ve blogged about this in my previous posts (1, 2). If you haven’t read them yet, it’s high time to do so. In this article, I am going to share with you a new finding while helping a development team. [...]<p><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/">One More Secret About Session Management in vSphere</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>Session management is a very important part of vSphere management, especially when scalability is involved. I’ve blogged about this in my previous posts (<a href="http://www.doublecloud.org/2010/01/tips-on-session-management-for-scaling-your-server-applications-to-vsphere/">1</a>, <a href="http://www.doublecloud.org/2010/02/the-mythical-sessions-in-vsphere-and-vi/">2</a>). If you haven’t read them yet, it’s high time to do so.</p>
<p>In this article, I am going to share with you a new finding while helping a development team. By default, an idle session is terminated by vSphere server after 30 minutes. The team found that it’s not totally true. They use several types of sessions for different purposes. Two of the sessions remain live even after the 30 minute default while others are gone.</p>
<p>The initial question we asked ourselves was, “what are the differences of the two from others?” Because all the sessions are using the same username, it’s not easy to tell which is which, therefore hard to track the logic behind the two ever-lasting sessions. A little more discussion with the team uncovered that there are two sessions that are different from all others in that they call waitForUpdate() method for pushing changes from server to client.</p>
<p>In the push mode, the server thread gets into corresponding function/method call. It cannot return unless there are new changes per PropertyFilter objects that specify monitoring points. It’s a reasonable argument that the server should know of inactivity of 30 minutes and terminate the session. But in reality, I guess the server side thread may not be able to count time because it’s still within the method call.</p>
<p>Note that the problem wouldn’t be there if a logout is called, which I highly recommend in <a href="http://www.doublecloud.org/2010/01/top-10-best-practices-using-vmware-vi-and-vsphere-sdk-part-2/">top 10 best practices using vSphere API</a>. Basically you don’t want to leave doubts to the server side which works most but not all of the times.</p>
<p>Well, sometimes you don’t have full control and the unexpected does happen, for example, your client application shuts down unexpectedly. In that case, if you can avoid push mode, you should be fine; otherwise, you got to manually terminate remaining sessions.</p>
<p><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/">One More Secret About Session Management in vSphere</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/09/fixed-a-bug-in-client-rest-api/" title="Fixed a Bug in Client REST API">Fixed a Bug in Client REST API</a></li><li><a href="http://www.doublecloud.org/2011/08/workaround-vsphere-java-api-with-java-web-start/" title="Workaround: vSphere Java API with Java Web Start">Workaround: vSphere Java API with Java Web Start</a></li><li><a href="http://www.doublecloud.org/2011/06/moving-virtual-machine-back-from-distributed-virtual-switch/" title="Moving Virtual Machine Back From Distributed Virtual Switch">Moving Virtual Machine Back From Distributed Virtual Switch</a></li><li><a href="http://www.doublecloud.org/2011/06/is-serverguid-attribute-really-needed-in-vsphere/" title="Is serverGuid Attribute Really Needed in vSphere?">Is serverGuid Attribute Really Needed in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/06/managedobjectreference-vs-managedobject/" title="ManagedObjectReference vs ManagedObject">ManagedObjectReference vs ManagedObject</a></li><li><a href="http://www.doublecloud.org/2011/06/most-used-api-in-vsphere/" title="Most Used API in vSphere">Most Used API in vSphere</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escaping Characters for SOAP XML: Late But Here</title>
		<link>http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/</link>
		<comments>http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 05:01:23 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[vi java api]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2610</guid>
		<description><![CDATA[It’s a known bug in VI Java API that it did not escape strings to be included within a XML tag. The potential risk, although very very rare, is that it can blow the de-serialization of a request on the server side. I did get one or two reports on failing on login, which turned out [...]<p><a href="http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/">Escaping Characters for SOAP XML: Late But Here</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>It’s a known bug in <a href="http://vijava.sf.net" target="_blank">VI Java API</a> that it did not escape strings to be included within a XML tag. The potential risk, although very very rare, is that it can blow the de-serialization of a request on the server side. I did get one or two reports on failing on login, which turned out to be caused by special characters like &lt; or &gt; in passwords. As a quick fix, an escaping logic has been added to escape the special characters in passwords.</p>
<p>This is of course just a workaround, not really meant to be future proof. I think the chance of getting into similar trouble is so small that it may not worth the effort to make it right until <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=3406599&amp;group_id=228007&amp;atid=1073396">a recent bug report</a> on the OVF importing. The method call ResourcePool.importVApp() returns with InvalidRequest exception as follows:</p>
<blockquote>
<pre>com.vmware.vim25.InvalidRequest: null
...
at com.vmware.vim25.ws.XmlGen.fromXml(XmlGen.java:201) ~[vijava3.jar:na]
at com.vmware.vim25.ws.XmlGen.parseSoapFault(XmlGen.java:80) ~[vijava3.jar:na]
at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:133) ~[vijava3.jar:na]
at com.vmware.vim25.ws.VimStub.importVApp(VimStub.java:1418) ~[vijava3.jar:na]
at com.vmware.vim25.mo.ResourcePool.importVApp(ResourcePool.java:102) ~[vijava3.jar:na]</pre>
</blockquote>
<p>After being debugged it turned out to be related to a field of string type holding XML content, therefore breaks the server side.</p>
<p>We can patch it up with the same approach as with password, but decided to get it right this time as the possibility of running into this issue is higher in vSphere 5.</p>
<p>The fix should be fairly simple- that is to escape in the serialization engine. Whenever there is a string value, escape it with the following code.</p>
<pre class="brush: java; title: ; notranslate">
private static String escapeForXML(String str)
{
  StringBuilder sb = new StringBuilder(str.length());

  for(int i=0; i&lt;str.length(); i++)
  {
    char c = str.charAt(i);

    if(c=='&amp;')
    {
      sb.append(&quot;&amp;amp;&quot;);
    }
    else if(c=='&lt;')
    {
      sb.append(&quot;&amp;lt;&quot;);
    }
    else if(c=='&gt;')
    {
      sb.append(&quot;&amp;gt;&quot;);
    }
    else if(c=='&quot;')
    {
      sb.append(&quot;&amp;quot;&quot;);
    }
    else if(c=='\'')
    {
      sb.append(&quot;&amp;apos;&quot;);
    }
    else
    {
      sb.append(c);
    }
  }
  return sb.toString();
}
</pre>
<p><span style="font-size: x-small;"><span style="font-size: x-small;"> </span></span></p>
<p>One of the reasons that I was slow to get it right was concern on performance. After testing it, it’s not bad at all. At least I cannot tell much difference in performance. After all, the string typed parameters are mostly pretty small in size. Also, using StringBuilder instead of StringBuffer might also have helped.</p>
<p>The fix will be in 5.0 GA build. From there, we will have a piece of mind that it won’t be a potential problem any more. Also changed is <a href="https://vijava.svn.sourceforge.net/svnroot/vijava/trunk/src/com/vmware/vim25/mo/samples/ovf/ImportLocalOvfVApp.java" target="_blank">the importing vApp sample</a> included in <a href="http://vijava.sf.net" target="_blank">VI Java API</a>.</p>
<p><a href="http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/">Escaping Characters for SOAP XML: Late But Here</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2010/11/wire-compatibility-of-web-services/" title="Wire Compatibility of Web Services">Wire Compatibility of Web Services</a></li><li><a href="http://www.doublecloud.org/2010/02/top-5-myths-about-vsphere-api/" title="Top 5 Myths about VMware vSphere API">Top 5 Myths about VMware vSphere API</a></li><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/09/escaping-characters-for-soap-xml-late-but-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Missing ArrayOfDatastoreEventArgument</title>
		<link>http://www.doublecloud.org/2011/09/missing-arrayofdatastoreeventargument/</link>
		<comments>http://www.doublecloud.org/2011/09/missing-arrayofdatastoreeventargument/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 06:06:19 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[vi java api]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2598</guid>
		<description><![CDATA[After the vSphere Java API 5.0 beta was released, I got a very interesting bug that I think is worthwhile to share with the community. Note that I used the word “interesting.” It turned out to have no solution logically, but quite easy to work around and patch up. The workaround addresses only particular issue [...]<p><a href="http://www.doublecloud.org/2011/09/missing-arrayofdatastoreeventargument/">Missing ArrayOfDatastoreEventArgument</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>After the <a href="http://www.doublecloud.org/2011/08/announcing-vi-java-api-5-0-beta/" target="_blank">vSphere Java API 5.0 beta was released</a>, I got a very interesting bug that I think is worthwhile to share with the community. Note that I used the word “interesting.” It turned out to have no solution logically, but quite easy to work around and patch up. The workaround addresses only particular issue but does not prevent similar bugs from happening in the future.</p>
<p>Confused? Let’s take a quick look at the bug report:</p>
<blockquote><p>This was observed with the 2.1 version. This is a type that was observed in the EventEx for storage redundancy lost/restored. I have verified that on adding the type, the error is resolved. Attaching the file I added</p>
<p>java.lang.ClassNotFoundException: com.vmware.vijavavim25.ArrayOfDatastoreEventArgument<br />
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)<br />
at java.security.AccessController.doPrivileged(Native Method)<br />
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)<br />
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)<br />
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)<br />
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)<br />
at java.lang.Class.forName0(Native Method)<br />
at java.lang.Class.forName(Class.java:169)<br />
at com.vmware.vijavavim25.ws.XmlGen.getVimClass(XmlGen.java:179)<br />
at com.vmware.vijavavim25.ws.XmlGen.fromXml(XmlGen.java:233)<br />
at com.vmware.vijavavim25.ws.XmlGen.fromXml(XmlGen.java:288)<br />
at com.vmware.vijavavim25.ws.XmlGen.fromXML(XmlGen.java:133)<br />
at com.vmware.vijavavim25.ws.WSClient.invoke(WSClient.java:153)<br />
at com.vmware.vijavavim25.ws.VimStub.queryEvents(VimStub.java:2351)<br />
at com.vmware.vijavavim25.mo.EventManager.queryEvents(EventManager.java:86)<br />
at EventTest.main(EventTest.java:33) Exception in thread &#8220;main&#8221; java.rmi.RemoteException: Exception in WSClient.invoke:; nested exception is:<br />
java.lang.NullPointerException<br />
at com.vmware.vijavavim25.ws.WSClient.invoke(WSClient.java:157)<br />
at com.vmware.vijavavim25.ws.VimStub.queryEvents(VimStub.java:2351)<br />
at com.vmware.vijavavim25.mo.EventManager.queryEvents(EventManager.java:86)<br />
at EventTest.main(EventTest.java:33) Caused by: java.lang.NullPointerException<br />
at com.vmware.vijavavim25.ws.XmlGen.fromXml(XmlGen.java:255)<br />
at com.vmware.vijavavim25.ws.XmlGen.fromXml(XmlGen.java:288)<br />
at com.vmware.vijavavim25.ws.XmlGen.fromXML(XmlGen.java:133)<br />
at com.vmware.vijavavim25.ws.WSClient.invoke(WSClient.java:153)</p></blockquote>
<p>A little clarification here: although observed in 2.1 but it’s really with vSphere 5.</p>
<p>The call stack clearly states that the type ArrayOfDatastoreEventArgument is missing. Naturally I first verified whether it’s actually defined in the com.vmware.vim25 package. After failing to find it, I checked the WSDL files of vSphere 5.0. To my surprise, it’s not there neither. You may be thinking: why not the WSDL files of vSphere 4.1 which corresponds to the version 2.1. A good question. To be compatible, vSphere API does not remove types therefore the vSphere 5.0 API should have all of 4.1. Therefore not finding it in 5.0 is sufficient to say it’s not in 4.1.</p>
<p>Now it becomes a puzzle why there is a type that not defined. Further thinking about the case which it happens, I dig down to the <em>EventEx</em> data object. As the API reference states, “EventEx is a dynamically typed Event class who type is indicated by its eventTypeId property.” It means this EventEx type is a super type for these whose type is to be decided later.</p>
<p>All the properties of the EventEx look good except the arguments which is <em>KeyAnyValue</em>[]. Within <em>KeyAnyValue</em> object, two properties defined: <em>key</em> as xsd:string; and <em>value</em> as xsd:anyType. The <em>key</em> should have caused no trouble because string type is defined and used a lot in the API. Now the second one could be problematic because it basically says it can be any type, including types that are not yet defined.</p>
<p>The question then becomes how you can know before hand what future concrete types the <em>value</em> will be. Logically it’s impossible! That is why I said early there is no solution to this.</p>
<p>To be clear, there are other places where xsd:anyType is used. But in these places, they are mostly strings or other types that have been defined in the WSDL files. Therefore it does not cause trouble. In this particular bug, ArrayOfDatastoreEventArgument type is not defined anywhere but leaked from the server side.</p>
<p>Because the exception is clear and specific, working it around is very easy – just add that type as other existing ArrayOfXXX types in the WSDL. As you expect, it worked. So if you are using <a href="http://vijava.sf.net" target="_blank">VI Java API</a> 5.0 GA, you should be covered.</p>
<p>But I know it’s not future proof. Similar problem can come up without control of client side. Possible solutions to this issue include specifying specific types in place of xsd:anyType, which is a bit late given that it’s already out; or limiting the possible types to only existing ones in WSDL; or proactively add more possible types into WSDL.</p>
<p><a href="http://www.doublecloud.org/2011/09/missing-arrayofdatastoreeventargument/">Missing ArrayOfDatastoreEventArgument</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li><li><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" title="VI Java API 5.0 GA Released">VI Java API 5.0 GA Released</a></li><li><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/" title="One More Secret About Session Management in vSphere">One More Secret About Session Management in vSphere</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/09/missing-arrayofdatastoreeventargument/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VIX Implementation in vSphere Java API</title>
		<link>http://www.doublecloud.org/2011/09/vix-implementation-in-vsphere-java-api/</link>
		<comments>http://www.doublecloud.org/2011/09/vix-implementation-in-vsphere-java-api/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 04:44:59 +0000</pubDate>
		<dc:creator>Steve Jin</dc:creator>
				<category><![CDATA[vSphere API]]></category>
		<category><![CDATA[vi java api]]></category>
		<category><![CDATA[VIX]]></category>

		<guid isPermaLink="false">http://www.doublecloud.org/?p=2583</guid>
		<description><![CDATA[Among all the new features vSphere API exposes, I think VIX integration is very important. All of sudden, the vSphere API gets a boost on manageability of guest OS, and you can do many more with single set of APIs. Yes, VIX has been there for a while. To use it, you have to download [...]<p><a href="http://www.doublecloud.org/2011/09/vix-implementation-in-vsphere-java-api/">VIX Implementation in vSphere Java API</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
]]></description>
			<content:encoded><![CDATA[<p>Among all the new features vSphere API exposes, I think VIX integration is very important. All of sudden, the vSphere API gets a boost on manageability of guest OS, and you can do many more with single set of APIs.</p>
<p>Yes, VIX has been there for a while. To use it, you have to download the <a href="https://www.vmware.com/support/developer/vix-api/" target="_blank">SDK </a>separately and tie your application to either Windows or Linux, and interfaces for C, Perl or COM. It’s not as portable as vSphere API which is built on top of Web Services. Of course, vSphere Web Service API has its own problem but has been mostly addressed in open source vSphere Java API.</p>
<p>While designing Java API for the VIX in <a href="http://www.doublecloud.org/2011/08/announcing-vi-java-api-5-0-beta/" target="_blank">VI Java API 5.0 beta</a>, I made some changes to make it more object-oriented, and as a result easier to use. So if you use vSphere Java API for access VIX, you want to read carefully.</p>
<p>The standard VIX APIs defined in vSphere API have signatures like the following:</p>
<pre class="brush: java; title: ; notranslate">
public GuestListFileInfo listFilesInGuest(ManagedObjectReference _this, ManagedObjectReference vm,
        GuestAuthentication auth, String filePath, int index, int maxResults, String matchPattern)
         throws java.rmi.RemoteException, GuestOperationsFault, InvalidState, TaskInProgress,
                FileFault, RuntimeFault
</pre>
<p>Note that the first parameter is the <a href="http://www.doublecloud.org/2011/06/managedobjectreference-vs-managedobject/" target="_blank">MOR </a>to the GuestFileManager managed object type; the second is to the virtual machine on which the guest OS runs.</p>
<p>In the typical vSphere Java API, the first parameter is captured in corresponding type and therefore not visible in the new signature exposed in vSphere Java API. In the above case, we would have something like the following: (omit the exceptions, same for following signatures.)</p>
<pre class="brush: java; title: ; notranslate">
public GuestListFileInfo listFilesInGuest(VirtualMachine vm, GuestAuthentication auth,
           String filePath,  int index, int maxResults, String matchPattern)
</pre>
<p>Still, if you want to do something with a guest OS on a virtual machine, you have to provide the VirtualMachine object every time. It’s OK but could be better. BTW, if you are familiar with the FlyWeight design pattern, that is the style. In this context, the situation to use the pattern does not hold mostly. So we prefer typical OO style.</p>
<p>So I decided to shorten the interface as follows:</p>
<pre class="brush: java; title: ; notranslate">
public GuestListFileInfo listFilesInGuest(GuestAuthentication auth, String filePath, int index, int maxResults, String matchPattern)
</pre>
<p>Now how does the API knows which virtual machine? This information is captured in the GuestFileManager managed object type as follows:</p>
<pre class="brush: java; title: ; notranslate">
public class GuestFileManager extends ManagedObject
{
private VirtualMachine vm = null;
public GuestFileManager(ServerConnection sc, ManagedObjectReference mor, VirtualMachine vm)
{
super(sc, mor);
this.vm = vm;
}
</pre>
<p>Note that I also include the constructor so you know how it’s created.</p>
<p>Because the GuestFileManager is retrieved from the GuestOperationManager. The original signature there has to be changed as well. In the GuestFileManager case, one additional parameter is added to the original getter method without any signature:</p>
<pre class="brush: java; title: ; notranslate">
public GuestFileManager getFileManager(VirtualMachine vm)
{
ManagedObjectReference mor = (ManagedObjectReference) getCurrentProperty(&quot;fileManager&quot;);
return new GuestFileManager(getServerConnection(), mor, vm);
}
</pre>
<p>So to get a GuestFileManager, you must provide a VirtualMachine object as parameter. Same is true for other three types: GuestAuthManager, GuestOperationsManager, and GuestProcessManager. The result is, as you will find out, cleaner code, especially when you have multiple operations with the same GuestFileManager for example.</p>
<p>I hope you now have better idea what to expect while leveraging <a href="http://vijava.sf.net/" target="_blank">vSphere Java API</a> for guest management.</p>
<p><a href="http://www.doublecloud.org/2011/09/vix-implementation-in-vsphere-java-api/">VIX Implementation in vSphere Java API</a> originally appeared on <a href="http://www.doublecloud.org">DoubleCloud</a> by Steve Jin, author of <a href="http://www.amazon.com/gp/product/0137153635?ie=UTF8&tag=doublecloudor-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137153635">VMware VI and vSphere SDK (Prentice Hall)</a> and creator of <a href="http://vijava.sf.net">VMware vSphere Java API</a>. Follow Steve on <a href="http://www.twitter.com/sjin2008">Twitter</a> and receive future articles via <a href="http://www.doublecloud.org/feed">RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=Doublecloud">Email</a>.
</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://www.doublecloud.org/2012/02/announcing-code-generator-for-vsphere-java-api/" title="Announcing Code Generator For vSphere Java API">Announcing Code Generator For vSphere Java API</a></li><li><a href="http://www.doublecloud.org/2012/01/why-vsphere-propertycollector-is-hard-by-design/" title="Why vSphere PropertyCollector Is Hard By Design?">Why vSphere PropertyCollector Is Hard By Design?</a></li><li><a href="http://www.doublecloud.org/2011/11/what-roles-does-a-user-have-in-vsphere/" title="What Roles Does A User Have in vSphere?">What Roles Does A User Have in vSphere?</a></li><li><a href="http://www.doublecloud.org/2011/11/discontinuous-response-stream-from-vsphere/" title="Discontinuous Response Stream from vSphere">Discontinuous Response Stream from vSphere</a></li><li><a href="http://www.doublecloud.org/2011/10/the-future-of-vi-java-api-and-how-you-can-help/" title="The Future of VI Java API and How You can Help">The Future of VI Java API and How You can Help</a></li><li><a href="http://www.doublecloud.org/2011/10/vi-java-api-5-0-ga-released/" title="VI Java API 5.0 GA Released">VI Java API 5.0 GA Released</a></li><li><a href="http://www.doublecloud.org/2011/09/one-more-secret-about-session-management-in-vsphere/" title="One More Secret About Session Management in vSphere">One More Secret About Session Management in vSphere</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.doublecloud.org/2011/09/vix-implementation-in-vsphere-java-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

