[jboss-user] [Microcontainer] - Re: ClassLoaderMetaData not propagating (yet?) to classloade

gcompienne do-not-reply at jboss.com
Tue Feb 12 06:43:35 EST 2008


Ok, here is the code for TestDescribeDeployer:


  | package protomcf.test.deployer;
  | 
  | import java.util.List;
  | 
  | import org.jboss.deployers.spi.DeploymentException;
  | import org.jboss.deployers.spi.deployer.DeploymentStages;
  | import org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer;
  | import org.jboss.deployers.structure.spi.ClassLoaderFactory;
  | import org.jboss.deployers.structure.spi.DeploymentUnit;
  | import org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData;
  | import org.jboss.logging.Logger;
  | 
  | import protomcf.test.metadata.ParserMetaData;
  | 
  | public class TestDescribeDeployer extends AbstractRealDeployer {
  | 
  |    private final Logger log = Logger.getLogger(TestDescribeDeployer.class); 
  |    
  |    public TestDescribeDeployer() {
  |       setStage(DeploymentStages.DESCRIBE);
  |       setInputs(new Class<?>[] {ParserMetaData.class, ClassLoaderMetaData.class});
  |       //setInput(ParserMetaData.class);
  |       //setInput(ClassLoaderMetaData.class);
  |       setOutput(ClassLoaderMetaData.class);
  |       //setOutput(TestMetaData.class);
  |       //setAllInputs(true);  
  |    }
  |    
  |    @Override
  |    protected void internalDeploy(DeploymentUnit unit) throws DeploymentException {
  |       log.debug("TestDescribeDeployer deploy called...");
  |       ClassLoaderMetaData clmd = unit.getAttachment(
  |             ClassLoaderMetaData.class); 
  |       if (clmd != null) {
  |          Utils.displayCLMetaData(clmd, log);
  |       }
  |       ClassLoaderFactory clf = unit.getAttachment(ClassLoaderFactory.class);
  |       if (clf != null) {
  |          log.debug("ClassLoaderFactory is " + clf);
  |       } else {
  |          log.debug("ClassLoaderFactory not present...");
  |       }      
  |       ParserMetaData pmd = unit.getAttachment(ParserMetaData.class);
  |       if (pmd != null) {
  |          log.debug("ParserMetaData found: " + pmd);
  |          clmd.setDomain("TestAppDomain");
  |          clmd.setImportAll(false);
  |          Utils.displayCLMetaData(clmd, log);
  |          unit.addAttachment(ClassLoaderMetaData.class, clmd);
  |       } else {
  |          log.debug("ParserMetaData not present...");
  |       }     
  |    }
  | 
  | }
  | 

Also here follows a more readable version of the log:


  | [MainDeployerImpl] Add deployment: vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar
  | [MainDeployerImpl] Scheduling deployment: vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar parent=null
  | [DeployersImpl] Deploying vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar
  | [TestParserDeployer] TestDeployerParser parsing...
  | [TestParserDeployer] TestDeployerParser returning: ParserMetaData at 9674968[testapp.BaseTestServlet]
  | [TestDescribeDeployer] TestDescribeDeployer deploy called...
  | [TestDescribeDeployer] ** ClassLoaderMetaData = org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData at 17a4a80
  | [TestDescribeDeployer] ** Name = vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar
  | [TestDescribeDeployer] ** Domain = <DEFAULT>
  | [TestDescribeDeployer] ** Parent Domain = null
  | [TestDescribeDeployer] ** isImportAll? true
  | [TestDescribeDeployer] ** Export all = NON_EMPTY
  | [TestDescribeDeployer] ClassLoaderFactory not present...
  | [TestDescribeDeployer] ParserMetaData found: ParserMetaData at 9674968[testapp.BaseTestServlet]
  | [TestDescribeDeployer] ** ClassLoaderMetaData = org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData at 17a4a80
  | [TestDescribeDeployer] ** Name = vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar
  | [TestDescribeDeployer] ** Domain = TestAppDomain
  | [TestDescribeDeployer] ** Parent Domain = null
  | [TestDescribeDeployer] ** isImportAll? false
  | [TestDescribeDeployer] ** Export all = NON_EMPTY
  | [BaseClassLoader] Created BaseClassLoader at 1b152ad with policy VFSClassLoaderPolicy at aaff99{domain=null roots=[JarEntryHandler at 26648165[path=apptest.jar/WEB-INF/classes context=file:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/ real=jar:file:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar!/WEB-INF/classes/], MemoryContextHandler at 7525824[path=classes context=vfsmemory://5c4o1e5d-iof0j2-fckddmwn-1-fckdgjxg-1l real=vfsmemory://5c4o1e5d-iof0j2-fckddmwn-1-fckdgjxg-1l/classes]]  delegates=[] exported=[testapp]NON_EMPTY}
  | [BaseClassLoaderDomain] ClassLoaderDomain at 12462b3{<DEFAULT>} registerClassLoader BaseClassLoader at 1b152ad{VFSClassLoaderPolicy at aaff99{domain=null roots=[JarEntryHandler at 26648165[path=apptest.jar/WEB-INF/classes context=file:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/ real=jar:file:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar!/WEB-INF/classes/], MemoryContextHandler at 7525824[path=classes context=vfsmemory://5c4o1e5d-iof0j2-fckddmwn-1-fckdgjxg-1l real=vfsmemory://5c4o1e5d-iof0j2-fckddmwn-1-fckdgjxg-1l/classes]]  delegates=[] exported=[testapp]NON_EMPTY}}
  | [TestClassloaderDeployer] ** ClassLoaderMetaData = org.jboss.deployers.structure.spi.classloading.ClassLoaderMetaData at 17a4a80
  | [TestClassloaderDeployer] ** Name = vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar
  | [TestClassloaderDeployer] ** Domain = TestAppDomain
  | [TestClassloaderDeployer] ** Parent Domain = null
  | [TestClassloaderDeployer] ** isImportAll? false
  | [TestClassloaderDeployer] ** Export all = NON_EMPTY
  | [TestClassloaderDeployer] ClassLoaderFactory not present...
  | [TestClassloaderDeployer] ClassLoader is BaseClassLoader at 1b152ad
  | [TestClassloaderDeployer] ** module = org.jboss.deployers.plugins.classloading.Module at 12f5047
  | [Ejb3Deployer] ********* Ejb3Deployer Begin Unit: apptest.jar jar: apptest.jar
  | [Ejb3Deployment] EJB3 deployment time took: 0
  | [DeployersImpl] Fully Deployed vfsfile:/C:/jboss5-beta3/jboss-5.0.0.Beta3/server/default/deploy/apptest.jar
  | 

On the log, you can see that TestDescribeDeployer did set the domain to "TestAppDomain" and the TestClassloaderDeployer clearly pick that up.

However on the two lines where the base class loader is created (in between the describe and CL deployer) we can clearly see that the domain is equal to default. I wonder what would also be the status of the "import" state but I can't display it yet (I will need to give it a go with a debugger at some point).

Thanks for your help.

Gilles.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4128700#4128700

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4128700



More information about the jboss-user mailing list