service声明
/META-INF/services/com.navercorp.apm.bootstrap.plugin.ProfilerPlugin
内容:com.navercorp.apm.plugin.sample.SamplePlugin // 插件的类名,实现ProfilerPlugin, TransformTemplateAware接口
/META-INF/services/com.navercorp.apm .common.trace.TraceMetadataProvider
内容:com.navercorp.apm.plugin.sample.SampleTraceMetadataProvider // 实现TraceMetadataProvider接口
插件实现
以SamplePlugin为例:
设置插件应用类型探测器
这决定了该插件生效时,该应用是什么类型的,例如是tomcat、jboss等ProfilerPluginSetupContext.addApplicationTypeDetector(ApplicationTypeDetector);
设置目标类和对应的拦截器
TransformTemplate.transform(“被拦截的类名”, new TransformCallback());
给目标类和目标方法添加拦截器,需要注意,如果1个目标类中有多个方法需要添加拦截器,需要在同一个InstrumentClass添加