快速业务通道

用Java Instrumentation在类加载时添加记录 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
t;jvmarg value="-javaagent:dist/loggeragent.jar=time"/>      </java>    </target>    <target name="withoutAgent" description="run normally">      <java fork="yes" classpath="bin" classname="com.runjva.demo.HelloWorld">      </java>    </target>    <target name="compile" description="compile classes">      <delete dir="bin" />      <mkdir dir="bin" />      <javac source="1.4" srcdir="src" destdir="bin" debug="true"                optimize="true" verbose="false" classpath="lib/javassist.jar">      </javac>    </target>    <target name="jar" depends="compile" description="create agent jar"> <jar basedir="bin" destfile="dist/loggeragent.jar" manifest="Manifest.mf"/>    </target> </project>

运行 ant 产生的输出大体为:

Buildfile: build.xml    compile:     [delete] Deleting directory /home/ravn/workspace/com.runjva.instrumentation/bin    [mkdir] Created dir: /home/ravn/workspace/com.runjva.instrumentation/bin   [javac] Compiling 3 source files to /home/ravn/workspace/com.runjva.instrumentation/bin jar:   [jar] Building jar: /home/ravn/workspace/com.runjva.instrumentation/dist/loggeragent. jarwithoutAgent:   [java] Hello World withAgent:   [java] Start at Fri Apr 18 21:13:53 CEST 2008   [java] 18-04-2008 21:13:54 com.runjva.demo.HelloWorld main   [java] INFO: >> main(args=[]) [java] Hello World   [java] 18-04-2008 21:13:54 com.runjva.demo.HelloWorld main   [java] INFO: << main(args=[])   [java] Stop at Fri Apr 18 21:13:54 CEST 2008all:BUILD SUCCESSFULTotal time: 2 seconds

此输出显示已经添加了记录语句并实际生成了输出。实际的语句顺序可能在运行中有所改变,这是由于记录语句将被写入 System.err 和时间信息,输出将从 HelloWorld 写入 System.out。

结束语

Java Instrumentation API 可以不需要改变源代码或编译的字节代码透明地对运行时上的任何 Java 代码添加方法-调用记录。通过自动生成记录语句,保证了他们总是最新的,这样,减轻了程序员单调繁重的任务操作。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号