FixedContext.java

import java.security.*;
import java.lang.reflect.*;
public final class FixedContext {
  /** Contexte de sécurité au moment de la construction de l'objet. */
  private AccessControlContext context;
  public FixedContext() {
    // Récupération et stockage du contexte de sécurité courant
    this.context = AccessController.getContext();
  }
  public Object method(Object param) {
    // Exécution du code de la méthode dans le contexte 
    // de sécurité de création de l'objet courant
    return AccessController.doPrivileged(new MethodAction(param),context);
  }
  /** Classe interne représentant le code de la méthode à exécuter. */
  class MethodAction implements PrivilegedAction {
    Object param;
    MethodAction(Object param) {
      this.param =  param;
    }
    /** Code de la méthode à exécuter. */ 
    public Object run() {
      // ...
      // Opérations sensibles
      // ...
      return param;
    }
  }
}