This example shows the complete sample client application code, without the explanatory steps. The example opens a connection with the server, retrieves the service content, uses the session manager managed object reference to log in, displays information about the server, and closes the connection.

import com.vmware.vim25.*;
import java.util.*;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.soap.SOAPFaultException;

public class TestClient {

// Authentication is handled by using a TrustManager and supplying
// a host name verifier method. (The host name verifier is declared
// in the main function.)
private static class TrustAllTrustManager
   implements javax.net.ssl.TrustManager,
              javax.net.ssl.X509TrustManager {

   public java.security.cert.X509Certificate[] getAcceptedIssuers() {
      return null;
   }

   public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {
      return true;
   }

   public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {
      return true;
   }

   public void checkServerTrusted(java.security.cert.X509Certificate[] certs,
                                  String authType)
      throws java.security.cert.CertificateException {
         return;
   }

   public void checkClientTrusted(java.security.cert.X509Certificate[] certs,
                                  String authType)
      throws java.security.cert.CertificateException {
         return;
   }
}

public static void main(String[] args) {
  try {

     // Server URL and credentials.
     String serverName = args[0];
     String userName   = args[1];
     String password   = args[2];
     String url = "https://"+serverName+"/sdk/vimService";
     // Variables of the following types  for access to the API methods
     // and to the vSphere inventory.
     // -- ManagedObjectReference for the ServiceInstance on the Server
     // -- VimService for access to the vSphere Web service
     // -- VimPortType for access to methods
     // -- ServiceContent for access to managed object services
     ManagedObjectReference SVC_INST_REF = new ManagedObjectReference();
     VimService vimService;
     VimPortType vimPort;
     ServiceContent serviceContent;

     // Declare a host name verifier that will automatically enable
     // the connection. The host name verifier is invoked during
     // the SSL handshake.
     HostnameVerifier hv = new HostnameVerifier() {
        public boolean verify(String urlHostName, SSLSession session) {
           return true;
        }
      };
      // Create the trust manager.
      javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
      javax.net.ssl.TrustManager tm = new TrustAllTrustManager();
      trustAllCerts[0] = tm;

      // Create the SSL context
      javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");

      // Create the session context
      javax.net.ssl.SSLSessionContext sslsc = sc.getServerSessionContext();

      // Initialize the contexts; the session context takes the trust manager.
      sslsc.setSessionTimeout(0);
      sc.init(null, trustAllCerts, null);

      // Use the default socket factory to create the socket for the secure connection
      javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
      // Set the default host name verifier to enable the connection.
      HttpsURLConnection.setDefaultHostnameVerifier(hv);

      // Set up the manufactured managed object reference for the ServiceInstance
      SVC_INST_REF.setType("ServiceInstance");
      SVC_INST_REF.setValue("ServiceInstance");

      // Create a VimService object to obtain a VimPort binding provider.
      // The BindingProvider provides access to the protocol fields
      // in request/response messages. Retrieve the request context
      // which will be used for processing message requests.
      vimService = new VimService();
      vimPort = vimService.getVimPort();
      Map<String, Object> ctxt = ((BindingProvider) vimPort).getRequestContext();

      // Store the Server URL in the request context and specify true
      // to maintain the connection between the client and server.
      // The client API will include the Server's HTTP cookie in its
      // requests to maintain the session. If you do not set this to true,
      // the Server will start a new session with each request.
      ctxt.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
      ctxt.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);

      // Retrieve the ServiceContent object and login
      serviceContent = vimPort.retrieveServiceContent(SVC_INST_REF);
      vimPort.login(serviceContent.getSessionManager(),
                    userName,
                    password,
                    null);

      // print out the product name, server type, and product version
      System.out.println(serviceContent.getAbout().getFullName());
      System.out.println("Server type is " + serviceContent.getAbout().getApiType());
      System.out.println("API version is " + serviceContent.getAbout().getVersion());

      // close the connection
      vimPort.logout(serviceContent.getSessionManager());
      } catch (Exception e) {
         System.out.println(" Connect Failed ");
         e.printStackTrace();
      }
   }//end main()
}// end class TestClient

// See Example: Obtaining a Session Token - Code Fragments from VMPromoteDisks.java for more details.