アプリの実行中に特定の情報を収集する javaagent があります。また、アプリの終了時に収集されたデータをいくつかのゴールデン データと比較し、比較が失敗した場合にゼロ以外の終了ステータスで終了することが期待されるシャットダウン フックも登録します。
ただし、 System.exit(exitStatus) を呼び出すとアプリが強制的にデッドロック状態になるため、これを行うことはできません。
ゼロ以外の終了ステータス FROM WITHIN THE SHUTDOWN HOOKで終了する方法はありますか
java.lang.Runtime.halt(exitStatus) も使用してみましたが、役に立たないようです。エコー $? 常に終了ステータスが 0 であることを示しているようです
私のアプリケーションコード
public class Sample {
public static void main(String args[]) {
System.out.println("My code");
}
}
私のエージェントコード:
import java.lang.instrument.Instrumentation;
class CompareDataAtTheTimeOfExit extends Thread {
@Override
public void run() {
// If comparison fails exit with 5
}
}
class Agent {
public static void premain(String args, Instrumentation inst) throws Exception {
Runtime r = Runtime.getRuntime();
r.addShutdownHook(new CompareDataAtTheTimeOfExit());
}
}