La classe Java suivante est un exemple simple d'une classe que vous ne pouvez pas exécuter en mode multithread ou multi-utilisateurs, car elle accède et modifie une variable statique.
public class NeedsASandbox \{
static \{
System.out.println("This is my static initializer. You will see this many times.");
static String s;
public NeedsASandbox() \{\};
public void setS(String s)\{
this.s = s;
public String getS() \{
return s;
Cette classe doit être exécutée dans un bac à sable de chargeur de classes.
Supposons, par exemple, que vous devez exécuter cette classe dans DevTest et créer un test de charge de dix utilisateurs. Si vous n'utilisez pas le bac à sable de chargeur de classes, l'expression System.out.println s'affiche une seule fois et la valeur de s est incorrecte. Ce résultat est obtenu du fait que tous les utilisateurs sont exécutés dans un même chargeur de classes. Dans ces circonstances, un échec se produit pour cette classe. Si s'agit de la fonction de l'application appropriée, utilisez le bac à sable du chargeur de classes pour obtenir un résultat correct.
Lorsque vous créez le compagnon Class Loader Sandbox (Bac à sable du chargeur de classes) et que DevTest simule les dix utilisateurs, l'expression de texte dans le code s'affiche dix fois. DevTest crée dix chargeurs de classes distincts et instancie cette classe dix fois. Il existe donc dix instances distinctes de la variable de classe static string s. Cette fonctionnalité permet d'exécuter la logique d'application, non sécurisée, dans des tests d'utilisateur simultanés.
Le compagnon Class Loader Sandbox est utile uniquement si les trois conditions suivantes sont réunies :
|
Copyright © 2014 CA Technologies.
Tous droits réservés.
|
|