On 2002.02.17 22:09:50 -0500 Jason Dillon wrote:
> Shouldn't MBeanClassLoader usage be replaced by UnifiedClassLoader ? 
> They appear to be very similar.  Is there some special need to have
> these separated?
> 
> --jason
> 
Well, I don't think so.

UnifiedClassLoader actually loads classes from URLs. MBeanClassLoader is
kind of a marker: there is one for each mbean instance.  The idea, which is
not yet implemented, is that it should provide class <--> mbean dependency
tracking, so if the class of an mbean is undeployed without the mbean being
explicitly removed, the MBeanClassLoader sticks around as kind of a marker,
waiting for the class to show up again, then recreating the mbean instance.

This is, as I understand it, Marc's idea for a better way to do class <-->
mbean dependencies than the classpath dependency mechanism I once
implemented.

david jencks

> 
> On Sun, 2002-02-17 at 18:30, David Jencks wrote:
> > I'm not sure this is all that is happening.  I've just committed a test
> > case (org.jboss.test.jmx.test.MBeanClassLoaderUnitTestCase) that shows
> that
> > an mbean instance thinks it's classloader is a UnifiedClassLoader, and
> that
> > when you redeploy the classes (and mbeans), the UnifiedClassLoader
> changes
> > appropriately.
> > 
> > here's some test log: A and B are mbeans based on the same class, and
> are
> > deployed and redeployed.
> > 
> > [MBeanClassLoaderUnitTestCase,DEBUG] classloader for A: JBoss
> > UnifiedClassloader: keyURL : 
>file:/mnt/otherlinux/usr/java/jboss/co10/jboss-all/build/output/jboss-3.0.0beta/tmp/deploy/68.testmbeanclassloader.jar]
> > [MBeanClassLoaderUnitTestCase,DEBUG] classloader for B: JBoss
> > UnifiedClassloader: keyURL : 
>file:/mnt/otherlinux/usr/java/jboss/co10/jboss-all/build/output/jboss-3.0.0beta/tmp/deploy/68.testmbeanclassloader.jar]
> > [MBeanClassLoaderUnitTestCase,DEBUG] classloader for A: JBoss
> > UnifiedClassloader: keyURL : 
>file:/mnt/otherlinux/usr/java/jboss/co10/jboss-all/build/output/jboss-3.0.0beta/tmp/deploy/70.testmbeanclassloader.jar]
> > [MBeanClassLoaderUnitTestCase,DEBUG] classloader for B: JBoss
> > UnifiedClassloader: keyURL : 
>file:/mnt/otherlinux/usr/java/jboss/co10/jboss-all/build/output/jboss-3.0.0beta/tmp/deploy/70.testmbeanclassloader.jar]
> > 
> > The values we see are from:
> >    public String getClassLoader()
> >    {
> >       return this.getClass().getClassLoader().toString();
> >    }
> > 
> > I think this is rather odd because the ServiceCreator asked the
> MBeanServer
> > to create the mbean using an MBeanClassLoader instance created
> specifically
> > for each mbean instance.
> > 
> > create and register the MBeanClassLoader:
> >       ObjectName loader = new ObjectName("jboss.system.classloader:id="
> +
> >                                          name.hashCode());
> > 
> >       MBeanClassLoader cl = new MBeanClassLoader(name);
> > 
> >       if (!server.isRegistered(loader))
> >          server.registerMBean(cl, loader);
> > 
> > and
> > 
> > create the MBean itself.
> >          ObjectInstance instance = server.createMBean(code,
> >                                                       name,
> >                                                       loader,
> >                                                      
> constructor.params,
> >                                                      
> > constructor.signature);
> > 
> > 
> > Why doesn't the mbean think its classloader is an MBeanClassLoader?
> > 
> > What's going on?
> > 
> > david jencks
> > 
> > On 2002.02.17 19:40:08 -0500 Scott M Stark wrote:
> > > Bug #516684 has shown a problem with the new class loading model
> > > that is related to caching of class data at the JVM level. The
> problem
> > > is due to the fact that all mbean services execute with the same
> > > MBeanClassLoader instance. Here is the scenario in Bug #516684 
> > > 
> > > 1. A sar containing an mbean service and an ejb-jar is deployed.
> > > The mbean service references home and remote interfaces from
> > > the ejb-jar.
> > > 2. The home and remote interfaces are loaded into the
> ServiceLibraries
> > > repository by the ejb-jar class loader.
> > > 3. The mbean service is executed and it uses its thread context
> > > class loader to access the ejb home and remote interfaces. The
> > > MBeanClassLoader obtains these from the ServiceLibraries repository.
> > > However, the JVM believes that it is the MBeanClassLoader which
> > > loaded these classes and creates a cache record from the
> > > MBeanClassLoader to the ejb home interface. This is invalid because
> > > the on redeployment another ejb-jar class loader will be the source
> > > of the update ejb home.
> > > 
> > > The solution is to execute mbean services with the thread context
> > > class loader set to the class loader created to load the deployment
> > > unit the mbean was in. I do not think we have this capability
> currently
> > > because we are using Sun jmxri implementation, but I need to look
> > > into this further. It is a point to remember for our jmx
> implementation.
> > > 
> > > xxxxxxxxxxxxxxxxxxxxxxxx
> > > Scott Stark
> > > Chief Technology Officer
> > > JBoss Group, LLC
> > > xxxxxxxxxxxxxxxxxxxxxxxx
> > > 
> > > 
> > > _______________________________________________
> > > Jboss-development mailing list
> > > [EMAIL PROTECTED]
> > > https://lists.sourceforge.net/lists/listinfo/jboss-development
> > > 
> > > 
> > 
> > _______________________________________________
> > Jboss-development mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 
> 
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to