public final synchronized boolean update(
  String jarName, String remoteLocation)
  throws Exception {
  File f = new File(cachePath+"/"+jarName+".jar");
  if ((f != null) && (f.exists()))
    f.delete();
  if ((remoteLocation != null) &&
    (remoteLocation.length() > 0)) {
    remoteLocProp.put(jarName, remoteLocation);
    BufferedOutputStream bos =
      new BufferedOutputStream(
      new FileOutputStream(remoteLocFile));
    remoteLocProp.store(bos, null);
  }
  ClassEntry ce = null;
  if (classEntries.containsKey(jarName)) {
    ce = (ClassEntry)classEntries.get(jarName);
    ce.update(remoteLocation);
    return true;
  }
  ce = new ClassEntry(this, jarName);
  classEntries.put(jarName, ce);
  return false;
}