0

アプリの実行中に特定の情報を収集する 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());
    }
}
4

0 に答える 0