Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.
hello, I'm develop db2 plugin, i was try to create a interceptor for my plugin but the following error returns to me : ERROR Transformer:com.navercorp.pinpoint.profiler.plugin.MatchableClassFileTransformerGuardDelegate threw an exception. codeLocation:file:/X:/IBM/SQLLIB/java/db2jcc4.jar cl:com.ibm.ws.bootstrap.ExtClassLoader@7af689e1 ctxCl:
com.ibm.ws.classloader.CompoundClassLoader@dc628a98[appwar:WC]
..
Delegation Mode: PARENT_LAST agentCl:ParallelClassLoader{name='pinpoint.agent'} com.navercorp.pinpoint.bootstrap.classloader.ParallelClassLoader@60bad117 Cause:null
java.lang.NullPointerException
I suspect it's because the constructor I want to access is (protected)
somebody can tell me what Class i have to use?
org.apache.camel.component.rabbitmq.RabbitConsumer#handleDelivery
to deliver message to application code.
profiler.message.queue.client.handler.methods
so start seeing more trace for the message processing?
hi @VictorChirinosDasilva94
The first parameter you specified in getConstructor is "nf".
But the first parameter of the Connection constructor is shown as "lf".
("nf" vs "lf")
By the way, Pinpoint can get all the constructors regardless of the Access Modifier.
And if you make DB2 plugin, and you contribute it to us, then it will be great help for us.
thanks :)
@VictorChirinosDasilva94
Each Plugin must track down range of library that they have.
For above reason, If you want to get DB2's ConnectString, then It must be located in DB2Plugin.
I don't known about how to get ConnectString in DB2.
That's why someone needs to learn about the library to develop the plug-in.
I think other jdbc-driver-plugin code will help you.
Please refer to the following codes.
com.navercorp.pinpoint.plugin.jdbc.mysql.interceptor.MySQLConnectionCreateInterceptor
com.navercorp.pinpoint.bootstrap.plugin.jdbc.interceptor.DriverConnectInterceptorV2
@koo-taejin
Hi. i'm joongsoo. I have a question about pinpoint internal code. (It may not be related to the pinpoint. sorry.)
Pinpoint have interceptor for HttpUrlConnection.
HttpUrlConnection is loaded by bootstrap classloader. but interceptor class is loaded by application classloader.
So if inject "call interceptor method" bytecode to HttpUrlConnection class, it is not found interceptor class. => throw NoClassDefFoundError
But pinpoint is not throw NoClassDefFoundError.
My guess is that you load a class using a string in a similar way to Class.forName ()
.
How did Pinpoint solve this problem?
Am I misunderstanding pinpoint source code?
Thank you.
@koo-taejin
Hello, i have a problem with Inject class interceptor to classpath :
2020-03-05 10:53:32 WARN Failed to load plugin class com.navercorp.pinpoint.plugin.jdbc.db2.interceptor.Db2ConnectionCreateInterceptor with classLoader com.ibm.ws.bootstrap.ExtClassLoader@e5d94cfc
java.lang.ClassNotFoundException: com.navercorp.pinpoint.plugin.jdbc.db2.interceptor.Db2ConnectionCreateInterceptor
at java.net.URLClassLoader.findClass(URLClassLoader.java:600)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:243)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:777)
at java.lang.ClassLoader.loadClass(ClassLoader.java:754)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:731)
at com.navercorp.pinpoint.profiler.instrument.classloading.URLClassLoaderHandler.injectClass(URLClassLoaderHandler.java:66)
at com.navercorp.pinpoint.profiler.instrument.classloading.JarProfilerPluginClassInjector.injectClass(JarProfilerPluginClassInjector.java:57)
help pleas :,c