国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

通過繼承SecurityManager實現系統退出檢查

2019-11-08 02:21:34
字體:
來源:轉載
供稿:網友

有時會遇到一個問題,系統運行時忽然退出,懷疑執行了System.exit方法,但是無法排查是哪里調用。可通過java的SecurityManager機制來進行檢查。

實現一個繼承SecurityManager的子類,重寫checkExit方法,并通過 -Djava.security.manager設置,就可監測到哪里執行了System.exit方法。

如下列代碼,將執行了System.exit方法打印出來

public class ExitPRintSecurityManager extends SecurityManager { private final int runtimeStackIndex = 3; @Override public void checkExit(int paramInt) { String exitName = "Runtime.exit"; StackTraceElement[] stack = Thread.currentThread().getStackTrace(); if (stack.length > runtimeStackIndex) { int sourceIndex = runtimeStackIndex; StackTraceElement source = stack[sourceIndex]; if ("java.lang.System".equals(source.getClassName()) && "exit".equals(source.getMethodName())) { source = stack[++sourceIndex]; exitName = "System.exit"; } System.out.println(exitName + " in " + source); System.out.println("Stack trace as follows:"); printStack(sourceIndex, stack); } else { System.out.println("Can not print System.exit"); } } private void printStack(int sourceIndex, StackTraceElement[] stack){ for (int i = sourceIndex - 1; i < stack.length; i++) { System.out.println(" " + stack[i]); } } @Override public void checkPermission(Permission perm, Object context) { // allow anything. } @Override public void checkPermission(Permission paramPermission) { // allow anything. }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平远县| 文化| 长沙市| 古田县| 宁陕县| 长白| 临漳县| 淮南市| 平原县| 壶关县| 怀宁县| 文登市| 成武县| 临清市| 崇仁县| 铜山县| 安庆市| 宽城| 清涧县| 晋江市| 黔西| 万宁市| 梧州市| 盖州市| 封开县| 朝阳市| 县级市| 大同县| 抚顺县| 中牟县| 响水县| 南昌市| 万荣县| 巴彦淖尔市| 油尖旺区| 侯马市| 鄂伦春自治旗| 灌南县| 松阳县| 若尔盖县| 河南省|