摘要:使用固定引入實(shí)例使用自己構(gòu)建的通過使用,便捷地創(chuàng)建
使用固定agent 引入pom
實(shí)例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();使用自己構(gòu)建的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,便捷地創(chuàng)建Java Agent
bytebuddy-tutorial
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65204.html
摘要:介紹是插件或者叫做代理,她是運(yùn)行在方法之前,她內(nèi)定的方法名稱叫。是不是很簡單啊。。。。接下來,我們看看使用方式咯。。。。。注意包的結(jié)構(gòu)要一樣哦。。。。。好了,今天的文章到這里就結(jié)束了。。。最后還來一張運(yùn)行結(jié)果吧。。。。 java agent介紹 java agent是jvm插件或者叫做代理,她是運(yùn)行在main方法之前,她內(nèi)定的方法名稱叫premain。 java agent 概述 s...
摘要:一網(wǎng)上關(guān)于的介紹很多,請找度娘和谷兄。唯一提的一點(diǎn)是字節(jié)碼注入比較好用的是,封裝度很高,使用簡單。二代碼樣例以下為關(guān)鍵代碼樣例,可以依樣畫瓢自行改造。加入棧實(shí)戰(zhàn)營知識星球,參與討論,更多實(shí)戰(zhàn)代碼分享,不就是幾斤蘋果,幾個(gè)榮耀道具的事嗎 一、Javaagent 網(wǎng)上關(guān)于Javaagent的介紹很多,請找度娘和谷兄。唯一提的一點(diǎn)是字節(jié)碼注入比較好用的是bytebuddy,封裝度很高,使用簡...
摘要:最黑科技的玩法就是字節(jié)碼編程,也就是動態(tài)修改或是動態(tài)生成字節(jié)碼。使用字節(jié)碼編程可以玩出很多高級玩法,其中最高級的玩法是在程序運(yùn)行時(shí)進(jìn)行字節(jié)碼修改和代碼注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);這個(gè)是我訂閱 陳皓老師在極客上的專欄《左耳聽風(fēng)》,我貼出來是為了自己以后方便學(xué)習(xí)和記憶,同時(shí)也分享給你們一起學(xué)習(xí)...
摘要:參與者流量來自于內(nèi)部系統(tǒng)和外部流量,其中大部分來自于外部流量。水平擴(kuò)容服務(wù)的水平擴(kuò)容重要性不言而喻。 背景 目前微店中臺團(tuán)隊(duì)為了滿足公司大部分產(chǎn)品、運(yùn)營以及部分后端開發(fā)人員的嘗鮮和試錯(cuò)的需求,提供了一套基于圖形化搭建的服務(wù)端接口交付方案,利用該方案及提供的系統(tǒng)可生成一副包含運(yùn)行時(shí)環(huán)境定義可立即運(yùn)行的工程代碼,最后,通過 某種serverless平臺 實(shí)現(xiàn)生成后代碼的部署、CI、運(yùn)行、反...
摘要:很高興地宣布在協(xié)議下正式開源了。是國內(nèi)首套開源持續(xù)集成解決方案,幫助企業(yè)團(tuán)隊(duì)實(shí)現(xiàn)開發(fā)流程自動化,快速持續(xù)交付高質(zhì)量軟件。官方網(wǎng)站開源地址以此,你可以將功能完整的持續(xù)集成服務(wù)部署到內(nèi)網(wǎng)使用。 很高興地宣布 flow.ci 在 Apache-2.0 協(xié)議下正式開源了。flow.ci 是國內(nèi)首套開源持續(xù)集成(CI) 解決方案,幫助企業(yè)團(tuán)隊(duì)實(shí)現(xiàn)開發(fā)流程(build-test-deploy)自動...
閱讀 1183·2021-09-27 13:34
閱讀 993·2021-09-13 10:25
閱讀 519·2019-08-30 15:52
閱讀 3457·2019-08-30 13:48
閱讀 658·2019-08-30 11:07
閱讀 2179·2019-08-29 16:23
閱讀 2005·2019-08-29 13:51
閱讀 2337·2019-08-26 17:42