[jboss-user] [Javassist user questions] - Re: javassist as a profiler in jboss
cry4dawn
do-not-reply at jboss.com
Fri Oct 26 09:11:05 EDT 2007
here is my transform method:
| public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
| byte[] transformed = null;
| System.out.println("Loading class: " + className);
| if (!className.startsWith("org/jboss")) {
| ClassPool pool = ClassPool.getDefault();
| Loader cl = new Loader(pool);
| ClassPool child = new ClassPool(pool);
| child.appendClassPath(new ClassClassPath(classBeingRedefined));
| try {
| CtClass c = child.get(className.replaceAll("/", "."));
| if (!c.isModified()) {
| CtMethod[] x = c.getMethods();
| for (CtMethod meth : x) {
| if (meth.getName().equals("finalize")) {
| try {
| meth = c.getDeclaredMethod(meth.getName());
| } catch (NotFoundException e) {
| System.out.println("finalize not found creating it");
| CtMethod m = CtNewMethod.make("public void finalize() throws Throwable { super.finalize();System.out.println(\"calling finalize\"); } ", c);
| c.addMethod(m);
| break;
| }
| System.out.println("modifing " + c.getName() + "'s finalize method");
| meth.insertBefore("{ System.out.println(\"calling finalize\"); }");
| }
| }
| return c.toBytecode();
| }
| } catch (Exception e) {
| e.printStackTrace();
| }
| }
| return transformed;
| }
|
which throws:
| Loading class: java/io/ObjectStreamClass$FieldReflector
| finalize not found creating it
| Loading class: sun/reflect/GeneratedSerializationConstructorAccessor2
| java.lang.NullPointerException
| at javassist.ClassClassPath.find(ClassClassPath.java:84)
| at javassist.ClassPoolTail.find(ClassPoolTail.java:317)
| at javassist.ClassPool.find(ClassPool.java:495)
| at javassist.ClassPool.createCtClass(ClassPool.java:479)
| at javassist.ClassPool.get0(ClassPool.java:445)
| at javassist.ClassPool.get(ClassPool.java:414)
| at com.healthmarkets.profiler.Xformer.transform(Xformer.java:37)
| at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
| at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
| at sun.misc.Unsafe.defineClass(Native Method)
| at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
| at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
| at java.security.AccessController.doPrivileged(Native Method)
| at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)
| at sun.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerat
| or.java:95)
| at sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:313)
| at java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1272)
| at java.io.ObjectStreamClass.access$1400(ObjectStreamClass.java:47)
| at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:393)
| at java.security.AccessController.doPrivileged(Native Method)
| at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:373)
| at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
| at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:369)
| at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
| at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1029)
| at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
| at javax.management.remote.rmi.RMIConnectorServer.encodeJRMPStub(RMIConnectorServer.java:715)
|
| at javax.management.remote.rmi.RMIConnectorServer.encodeStub(RMIConnectorServer.java:708)
| at javax.management.remote.rmi.RMIConnectorServer.encodeStubInAddress(RMIConnectorServer.java
| :680)
| at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:438)
| at sun.management.jmxremote.ConnectorBootstrap.startLocalConnectorServer(ConnectorBootstrap.j
| ava:390)
| at sun.management.Agent.premain(Agent.java:92)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at sun.management.Agent.startAgent(Agent.java:197)
| Loading class: sun/reflect/GeneratedSerializationConstructorAccessor3
| java.lang.NullPointerException
| at javassist.ClassClassPath.find(ClassClassPath.java:84)
| at javassist.ClassPoolTail.find(ClassPoolTail.java:317)
| at javassist.ClassPool.find(ClassPool.java:495)
| at javassist.ClassPool.createCtClass(ClassPool.java:479)
| at javassist.ClassPool.get0(ClassPool.java:445)
| at javassist.ClassPool.get(ClassPool.java:414)
| at com.healthmarkets.profiler.Xformer.transform(Xformer.java:37)
| at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
| at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
| at sun.misc.Unsafe.defineClass(Native Method)
| at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
| at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
|
any help would really be appreciated
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4099277#4099277
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4099277
More information about the jboss-user
mailing list