[jboss-user] [JBoss AOP] - Re: Jboss AOP classloading bug

ud1 do-not-reply at jboss.com
Sun Mar 25 07:22:06 EDT 2012


ud1 [https://community.jboss.org/people/ud1] created the discussion

"Re: Jboss AOP classloading bug"

To view the discussion, visit: https://community.jboss.org/message/726170#726170

--------------------------------------------------------------
I just sichronized calls of registerClassLoader():
I have created class:


package myapp.aop;

import javassist.ClassPool;

import org.jboss.classpool.plugins.jbosscl.JBossClClassPoolConfig;
import org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolFactory;
import org.jboss.classpool.spi.ClassLoaderRegistryHandler;
import org.jboss.classpool.spi.ClassPoolRepository;

import org.jboss.logging.Logger;

public class ClassPoolFactory extends JBossClDelegatingClassPoolFactory
{
 private final Logger log = Logger.getLogger(ClassPoolFactory.class);

 private class Handler implements ClassLoaderRegistryHandler
 {
 private ClassLoaderRegistryHandler successor;

 public ClassPool registerClassLoader(ClassLoader classLoader)
 {
 ClassPool result;
 synchronized(successor)
 {
 result = successor.registerClassLoader(classLoader);
 }

 if (result == null)
 log.debug("registerClassLoader() returned null, " + classLoader);

 return result;
 }

 public void unregisterClassLoader(ClassLoader classLoader)
 {
 successor.unregisterClassLoader(classLoader);
 }

 public void setSuccessor(ClassLoaderRegistryHandler handler)
 {
 successor = handler;
 }
 }

 public ClassPoolFactory(JBossClClassPoolConfig config)
 {
 super(config.getDomainRegistry(), config.getRegisterModuleCallback());
 config.setClassPoolFactory(this);
 ClassPoolRepository.getInstance().setClassPoolFactory(this);
 }

 public ClassLoaderRegistryHandler create(ClassLoaderRegistryHandler successor)
 {
 ClassLoaderRegistryHandler handler = new Handler();
 handler.setSuccessor(super.create(successor));
 return handler;
 }
}

and add these lines to the aop.xml file:

...
   <classloader name="aop-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true">
      ...
      <root>${jboss.server.home.url}/lib/myapp-aop.jar</root>
   </classloader>

...
   <bean name="MyAppClassPoolFactory" class="myapp.ClassPoolFactory">
      <constructor>
         <parameter>
            <inject bean="JBossClClassPoolConfig"/>
         </parameter>
      </constructor>
   </bean>

...


Probably it should work.
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/726170#726170]

Start a new discussion in JBoss AOP at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2027]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120325/c530da9c/attachment.html 


More information about the jboss-user mailing list