java - 如何从@Advice.OnMethodExit 中的 premain 方法中获取 arg?
问题描述
public static void premain(String arg, Instrumentation instrumentation) {
System.out.println("Agent for time measure:" + arg);
}
我想通过下面的方法获取 arg,或者没有使用 arg。最好在 OnMethodExit 方法中获取 arg。
public class TimerAdvice3 {
@Advice.OnMethodEnter
static long enter(@Advice.Origin String method, @Advice.AllArguments Object[] args) throws Exception {
HttpUriRequest httpUriRequest = (HttpUriRequest) args[1];
System.out.println(httpUriRequest.toString());
long start = System.currentTimeMillis();
return start;
}
@Advice.OnMethodExit
static void exit(@Advice.Origin String method, @Advice.Enter long start) throws Exception {
long end = System.currentTimeMillis();
System.out.println("拦截======》" + method + " took " + (end - start) + " milliseconds ");
}
}
解决方案
public static void premain(String arg, Instrumentation instrumentation) {
System.out.println("Agent for time measure:" + arg);
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("./premain-arg");
fileWriter.append(arg);
fileWriter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是我的解决方案,但我认为它并不完美
推荐阅读
- internet-explorer - Cygwin crontab 导航到 phpwebpage
- nutch - nutch 我正在从段中读取内容文件夹。统计报告中存在差异
- node.js - nodejs服务停止或崩溃时,如何防止写入无效的JSON?
- php - 如何在 PHP 中运行异步操作
- r - 如何更改R中表格的布局
- javascript - 如何在angularjs中唯一标识ng-repeat中的元素?
- sqlite - 使用简单的多对多关系表创建 sqlite 视图
- php - 仅适用于管理员的字符串命令 [ php ]
- javascript - 如何在 JavaScript 数据表中创建自定义排序
- android - 在 Android 中返回多个改造调用时更改 UI