制限付きサンドボックス内で特定のスレッドクラスを実行したいが、残りのアプリケーションは制限なしで実行できます。スレッドごとにJavaセキュリティマネージャ
特定のスレッドクラスにのみセキュリティマネージャを接続できますか?
-
EDIT:ピーターのヒントを使用して、私は私のカスタムセキュリティマネージャ内で、次の変数を作成しました:
private static ThreadLocal<Boolean> isChatbot = new InheritableThreadLocal<Boolean>() {
@Override protected synchronized Boolean initialValue() {
boolean value = (Thread.currentThread() instanceof ChatBot);
return value;
}
@Override protected synchronized Boolean childValue(Boolean parentValue) {
boolean value = (Thread.currentThread() instanceof ChatBot || parentValue);
return value;
}
};
チャットボットは私が制限を実行するスレッドの私の特定のクラスです。したがって、initialValueでは、すべてのChatBotスレッドに値 'true'を与え、childValueではChatBotスレッドによって生成されたすべての子に値 'true'を与えます。
奇妙なことに、これは機能しません。私はchildValueの中にブレークポイントを置いて、実行は決してそこに到達することがないので、子スレッドは 'false'の値を取得します。
私は間違っていますか?
「添付」を意味すると思いますか? –