package org.jboss.as.test.integration.sar.context.classloader.mbean;
import org.jboss.logging.Logger;
/**
* A MBean class which resides in a JBoss Module. This MBean tests that the TCCL corresponds to the deployment classloader of the deployment through which this MBean was deployed
*
* @author: Jaikiran Pai
*/
public class MBeanInAModuleService implements MBeanInAModuleServiceMBean {
private static final Logger logger = Logger.getLogger(MBeanInAModuleService.class);
static {
logger.trace("Static block of " + MBeanInAModuleService.class.getName() + " being loaded");
// test TCCL in static block
testClassLoadByTCCL("org.jboss.as.test.integration.sar.context.classloader.ClassAInSarDeployment");
}
public MBeanInAModuleService() {
logger.trace("Constructing " + this);
// test TCCL in constructor
testClassLoadByTCCL("org.jboss.as.test.integration.sar.context.classloader.ClassBInSarDeployment");
}
@Override
public int add(int a, int b) {
return a + b;
}
public void start() {
logger.trace("Starting " + this);
// test TCCL in lifecycle method
testClassLoadByTCCL("org.jboss.as.test.integration.sar.context.classloader.ClassCInSarDeployment");
}
public void stop() {
logger.trace("Stopping " + this);
// test TCCL in lifecycle method
testClassLoadByTCCL("org.jboss.as.test.integration.sar.context.classloader.ClassDInSarDeployment");
}
private static void testClassLoadByTCCL(final String className) {
final ClassLoader tccl = Thread.currentThread().getContextClassLoader();
logger.trace("Trying to load class " + className + " from TCCL " + tccl);
try {
tccl.loadClass(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
logger.trace("Successfully loaded class " + className + " from TCCL " + tccl);
}
}