title: java axis web service client setMaintainSession on multiple services (cookies?)
body: <p>I'm implementing a client to a web service (and the guys maintaining the web service have been a litte unresponsive..) I've used axis and WSDL2Java to generate java classes and I can call their login-method on their authentication-service ok, and get a sessionId back (eg z4zojhiqkw40lj55kgtn1oya). However, it seems that i cannot use this sessionId as a parameter anywhere. Even a call to their hasSession()-method directly after login returned false. I managed to solve this by setting setMaintainSession(true) on the Locator-object for this service. But the problem is, that this first service, the Authentication-service, is only used for authentification. If I then call setMaintainSession(true) on eg ProductServiceLocator, and call some method on it, I will get an error because of unauthenticated session. I have to find a way to share the session between the services on the client side. 
  Looking on their php code example-it seeems like they are storing the session in a cookie. How can I mimic this behaviour in my java client?
  php-code:</p>
  
  <pre><code>$authentication = new SoapClient ( "https://webservices.24sevenoffice.com/authenticate/authenticate.asmx?wsdl", $options );
  // log into 24SevenOffice if we don't have any active session. No point doing this more than once.
  $login = true;
  if (!empty($_SESSION['ASP.NET_SessionId'])){
      $authentication-&gt;__setCookie("ASP.NET_SessionId", $_SESSION['ASP.NET_SessionId']);
      try{
          $login = !($authentication-&gt;HasSession()-&gt;HasSessionResult);
      }
      catch ( SoapFault $fault ) {
          $login = true;
      }
  }
  if( $login ){
      $result = ($temp = $authentication-&gt;Login($params));
      // set the session id for next time we call this page
      $_SESSION['ASP.NET_SessionId'] = $result-&gt;LoginResult;
      // each seperate webservice need the cookie set
      $authentication-&gt;__setCookie("ASP.NET_SessionId", $_SESSION['ASP.NET_SessionId']);
      // throw an error if the login is unsuccessful
      if($authentication-&gt;HasSession()-&gt;HasSessionResult == false)
          throw new SoapFault("0", "Invalid credential information.");
  }
  </code></pre>
  
  <p>My code is the following:</p>
  
  <pre><code>AuthenticateLocator al = new AuthenticateLocator();
  al.setMaintainSession(true);
  Credential c = new Credential(CredentialType.Community,username,password,guid);
  AuthenticateSoap s = al.getAuthenticateSoap();
  String sessionId = s.login(c);
  System.out.println("Session id was: "+sessionId);
  System.out.println("Has Session: "+s.hasSession()); //Hooray, now works after setMaintainSession(true)
  //And now trying to call another Service
  CompanyServiceLocator cl = new CompanyServiceLocator();
  cl.setMaintainSession(true);
  CompanyServiceSoap css = cl.getCompanyServiceSoap();
  css.getCountryList(); //FAILS!
  </code></pre>
  
  <p>So what can I do to make this work?</p>