sb.append("-cp").append(' ').append(System.getProperty("java.class.path")).append(' ');
String database = System.getProperty("test.database"); if (database != null) { sb.append("-Dtest.database=").append(database).append(' '); }  String serialization = System.getProperty("test.serialization"); if (serialization != null) { sb.append("-Dtest.serialization=").append(serialization).append(' '); }  String clustered = System.getProperty("test.clustered"); if (clustered != null) { sb.append("-Dtest.clustered=").append(clustered).append(' '); }  String remoting = System.getProperty("test.remoting"); if (remoting != null) { sb.append("-Dtest.remoting=").append(remoting).append(' '); }  String classPath = System.getProperty("java.class.path");    sb.append("-cp").append(" \"").append(classPath).append("\" ");
   public static synchronized void spawn(int index) throws Exception   {      if (servers[index] != null)      {         throw new Exception("The server " + index + " has been created already!");      }      // in the remote case, make sure the VM with the given index isn't already up      if (isRemote() && acquireRemote(3, index) != null)      {         throw new Exception("The remote server " + index + " seems to be already up!");      }      StringBuffer sb = new StringBuffer();      sb.append("java").append(' ');      sb.append("-Xmx512M").append(' ');      sb.append("-Dmodule.output=./../output").append(' ');      sb.append("-Dremote.test.suffix=-remote-").append(index).append(' ');      sb.append("-Dtest.server.index=").append(index).append(' ');      sb.append("-Dtest.bind.address=localhost").append(' ');      sb.append("-cp").append(' ').append(System.getProperty("java.class.path")).append(' ');      sb.append("org.jboss.test.messaging.tools.jmx.rmi.RMITestServer");      //System.out.println(sb.toString());      Runtime.getRuntime().exec(sb.toString());      killed[index] = false;      log.info("VM for Server " + index + " spawned");   }