adesanctis [
https://community.jboss.org/people/adesanctis] created the discussion
"How to manage instrumentation in application deployed on JBoss?"
To view the discussion, visit:
https://community.jboss.org/message/715422#715422
--------------------------------------------------------------
Hello everybody,
I'm trying to instrument classes in JBoss Enterprise application on JBoss EA5.0
Using this code:
| | public byte[] transform(ClassLoader loader, |
| | String className, |
| | Class classBeingRedefined, |
| | ProtectionDomain protectionDomain, |
| | byte[] classfileBuffer) throws IllegalClassFormatException { |
| | // The class name contains slashes instead of periods, so use transform those to
|
| | // dots for readability within the trace |
| | String dotClassName = className.replace('/', '.'); |
| | if (className.startsWith("$")) { |
| | return null; |
| | } |
| | // Only instrument a class once |
| | if (instrumentedClasses.contains(className)) { |
| | return null; |
| | } |
| | instrumentedClasses.add(className); |
| | // Skip in the list of class prefixes to skip |
| | for (MethodSelector classToSkip : classesToSkip) { |
| | if (dotClassName.startsWith(classToSkip.getPackageName())) { |
| | return null; |
| | } |
| | } |
| | if (logger.isInfoEnabled()) { |
| | logger.info("Checking class: " + className); |
| | } |
| | |
| | try { |
| | classPool.insertClassPath(new ByteArrayClassPath(className,
classfileBuffer)); |
| // | classPool.insertClassPath(new ClassClassPath(this.getClass())); |
| | |
| // | classPool.insertClassPath(new
ClassClassPath(classBeingRedefined.getClass())); |
| | *CtClass cc = classPool.get(dotClassName);* |
| // | CtClass cc = classPool.makeClass(new
ByteArrayInputStream(classfileBuffer)); | |
//
In bold line where exception is raised.
I suppose that arror is related to specific class loader used for load class.
The question is: how to manage classes independently from class loader used? Is there a
way to manage all possible case when working on JBoss?
Thank you
Alessandro
09:37:59,040 ERROR [STDERR] javassist.NotFoundException:
com.arjuna.ats.internal.jta.recovery.arjunacore.RecoveryXids
09:37:59,040 ERROR [STDERR] at javassist.ClassPool.get(ClassPool.java:436)
09:37:59,040 ERROR [STDERR] at
by.concept.applicationtracer.AdvancedTransformer.transform(AdvancedTransformer.java:163)
09:37:59,040 ERROR [STDERR] at
sun.instrument.TransformerManager.transform(TransformerManager.java:169)
09:37:59,040 ERROR [STDERR] at
sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)
09:37:59,040 ERROR [STDERR] at java.lang.ClassLoader.defineClass1(Native Method)
09:37:59,040 ERROR [STDERR] at
java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
09:37:59,040 ERROR [STDERR] at
java.lang.ClassLoader.defineClass(ClassLoader.java:615)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:67)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:633)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:592)
09:37:59,040 ERROR [STDERR] at java.security.AccessController.doPrivileged(Native
Method)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:591)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:568)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:135)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:455)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:267)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:166)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:276)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1138)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:862)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502)
09:37:59,040 ERROR [STDERR] at
org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447)
--------------------------------------------------------------
Reply to this message by going to Community
[
https://community.jboss.org/message/715422#715422]
Start a new discussion in Javassist at Community
[
https://community.jboss.org/choose-container!input.jspa?contentType=1&...]