摘要:使用固定引入实例使用自己构建的通过使用,便捷地创建
使用固定agent 引入pom
实例net.bytebuddy byte-buddy 1.4.16 net.bytebuddy byte-buddy-agent 1.4.16
public static void installAgent(){ ByteBuddyAgent.install(); AgentBuilder agentBuilder = new AgentBuilder.Default() .type(nameStartsWith("com.codecraft.demo") .and(not(isInterface())) .and(not(isStatic())) .transform((builder,typeDescription,classLoader) -> builder .method(ElementMatchers.any()) .intercept(MethodDelegation.to(TraceInterceptor.class) ); agentBuilder.installOnByteBuddyAgent();使用自己构建的agent
public static void premain(String argument, Instrumentation inst) { System.out.println("start premain)"); new AgentBuilder.Default() .type(nameStartsWith("com.codecraft.demo").and(not(isInterface())).and(not(isStatic()))) .transform((builder,typeDescription,classLoader) -> builder .method(ElementMatchers.any()) .intercept(MethodDelegation.to(TraceInterceptor.class) ) ).with(new AgentBuilder.Listener(){ @Override public void onTransformation(TypeDescription typeDescription, ClassLoader classLoader, JavaModule javaModule, DynamicType dynamicType) { } @Override public void onIgnored(TypeDescription typeDescription, ClassLoader classLoader, JavaModule javaModule) { } @Override public void onError(String s, ClassLoader classLoader, JavaModule javaModule, Throwable throwable) { throwable.printStackTrace(); } @Override public void onComplete(String s, ClassLoader classLoader, JavaModule javaModule) { } }) .installOn(inst); }pom
docsorg.apache.maven.plugins maven-compiler-plugin ${java.version} ${project.build.sourceEncoding} org.apache.maven.plugins maven-assembly-plugin 2.6 jar-with-dependencies ${project.artifactId}-${project.version} false ${premain} ${premain} assemble-all package single
通过使用Byte Buddy,便捷地创建Java Agent
bytebuddy-tutorial
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65204.html
摘要:介绍是插件或者叫做代理,她是运行在方法之前,她内定的方法名称叫。是不是很简单啊。。。。接下来,我们看看使用方式咯。。。。。注意包的结构要一样哦。。。。。好了,今天的文章到这里就结束了。。。最后还来一张运行结果吧。。。。 java agent介绍 java agent是jvm插件或者叫做代理,她是运行在main方法之前,她内定的方法名称叫premain。 java agent 概述 s...
摘要:一网上关于的介绍很多,请找度娘和谷兄。唯一提的一点是字节码注入比较好用的是,封装度很高,使用简单。二代码样例以下为关键代码样例,可以依样画瓢自行改造。加入栈实战营知识星球,参与讨论,更多实战代码分享,不就是几斤苹果,几个荣耀道具的事吗 一、Javaagent 网上关于Javaagent的介绍很多,请找度娘和谷兄。唯一提的一点是字节码注入比较好用的是bytebuddy,封装度很高,使用简...
摘要:最黑科技的玩法就是字节码编程,也就是动态修改或是动态生成字节码。使用字节码编程可以玩出很多高级玩法,其中最高级的玩法是在程序运行时进行字节码修改和代码注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);这个是我订阅 陈皓老师在极客上的专栏《左耳听风》,我贴出来是为了自己以后方便学习和记忆,同时也分享给你们一起学习...
摘要:参与者流量来自于内部系统和外部流量,其中大部分来自于外部流量。水平扩容服务的水平扩容重要性不言而喻。 背景 目前微店中台团队为了满足公司大部分产品、运营以及部分后端开发人员的尝鲜和试错的需求,提供了一套基于图形化搭建的服务端接口交付方案,利用该方案及提供的系统可生成一副包含运行时环境定义可立即运行的工程代码,最后,通过 某种serverless平台 实现生成后代码的部署、CI、运行、反...
摘要:很高兴地宣布在协议下正式开源了。是国内首套开源持续集成解决方案,帮助企业团队实现开发流程自动化,快速持续交付高质量软件。官方网站开源地址以此,你可以将功能完整的持续集成服务部署到内网使用。 很高兴地宣布 flow.ci 在 Apache-2.0 协议下正式开源了。flow.ci 是国内首套开源持续集成(CI) 解决方案,帮助企业团队实现开发流程(build-test-deploy)自动...
阅读 1159·2021-09-27 13:34
阅读 958·2021-09-13 10:25
阅读 492·2019-08-30 15:52
阅读 3428·2019-08-30 13:48
阅读 632·2019-08-30 11:07
阅读 2146·2019-08-29 16:23
阅读 1977·2019-08-29 13:51
阅读 2310·2019-08-26 17:42