以下の 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 つの条件が存在する場合にのみ、クラス ローダ サンドボックス コンパニオンは役立ちます。
|
Copyright © 2014 CA Technologies.
All rights reserved.
|
|