docs: protected void doPost(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException
      {
          // update counter
          numRequests++;
  
          try
          {
              // read request:
              LockManagerRemoteImpl.LockInfo info = (LockManagerRemoteImpl.LockInfo) buildObjectFromRequest(request);
              Object result = null;
              // now execute the command specified by the selector
              try
              {
                  switch(info.methodName)
                  {
                      case LockManagerRemoteImpl.METHOD_READ_LOCK:
                          {
                              result = new Boolean(lockmanager.readLock(info.key, info.resourceId, info.isolationLevel));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_RELEASE_SINGLE_LOCK:
                          {
                              result = new Boolean(lockmanager.releaseLock(info.key, info.resourceId));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_RELEASE_LOCKS:
                          {
                              lockmanager.releaseLocks(info.key);
                              result = Boolean.TRUE;
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_WRITE_LOCK:
                          {
                              result = new Boolean(lockmanager.writeLock(info.key, info.resourceId,
                                      info.isolationLevel));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_UPGRADE_LOCK:
                          {
                              result = new Boolean(lockmanager.upgradeLock(info.key, info.resourceId, info.isolationLevel));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_CHECK_READ:
                          {
                              result = new Boolean(lockmanager.hasRead(info.key, info.resourceId));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_CHECK_WRITE:
                          {
                              result = new Boolean(lockmanager.hasWrite(info.key, info.resourceId));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_CHECK_UPGRADE:
                          {
                              result = new Boolean(lockmanager.hasUpgrade(info.key, info.resourceId));
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_LOCK_INFO:
                          {
                              result = lockmanager.getLockInfo();
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_LOCK_TIMEOUT:
                          {
                              result = new Long(lockmanager.getLockTimeout());
                              break;
                          }
                      case LockManagerRemoteImpl.METHOD_BLOCK_TIMEOUT:
                          {
                              result = new Long(lockmanager.getBlockTimeout());
                              break;
                          }
  //                    case LockManagerRemoteImpl.METHOD_LOCK_TIMEOUT_SET:
  //                        {
  //                            lockmanager.setLockTimeout(info.lockTimeout);
  //                            break;
  //                        }
  //
  //                    case LockManagerRemoteImpl.METHOD_BLOCK_TIMEOUT_SET:
  //                        {
  //                            lockmanager.setBlockTimeout(info.blockTimeout);
  //                            break;
  //                        }
                      default :
                          {
                              throw new LockRuntimeException("Unknown command:" + info.methodName);
                          }
                  }
              }
              catch(RuntimeException e)
              {
                  result = new LockRuntimeException("Error while invoke specified method in servlet.", e);
              }
  
              ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
              oos.writeObject(result);
              oos.flush();
              oos.close();
          }
          catch(Throwable t)
          {
              lastError = t;
              t.printStackTrace();
          }
      }