[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