前のトピック: 日付ユーティリティの使用次のトピック: コンテナ内テスト(ICT)


クラス ローダ サンドボックスの例

以下の Java クラスは、静的な変数にアクセスして変更を行うため、マルチスレッドまたはマルチユーザで実行できないクラスの簡単な例です。

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;

このクラスは、クラス ローダ サンドボックスで実行する必要があります。

たとえば、DevTest でこのクラスを実行し、10 人のユーザの負荷テストを作成すると仮定します。 クラス ローダ サンドボックスを使用しない場合、System.out.println のテキストは 1 回しか表示されず、s の値は正しくありません。 これは、すべてのユーザが 1 つのクラス ローダで実行されているためです。 この場合、この特定のクラスは失敗します。 これがアプリケーションの正しい機能であると仮定し、これを適切に動作させるためにクラス ローダ サンドボックスのサポートを使用します。

クラス ローダ サンドボックス コンパニオンを作成すると、DevTest が 10 人のユーザをステージングした場合、コードのテキストが 10 回表示されます。 DevTest は 10 個の個別のクラス ローダを構築して、このクラスを 10 回インスタンス化します。つまり、クラス変数「static string s」の10 個の個別のインスタンスがあります。この機能によって、スレッド セーフではないアプリケーション ロジックを同時ユーザ テストで実行できます。

以下の 3 つの条件が存在する場合にのみ、クラス ローダ サンドボックス コンパニオンは役立ちます。