On 2003.02.19 03:43 Peter Antman wrote:
> On Tue, 2003-02-18 at 20:08, David Jencks wrote:
> > I don't yet understand what problem you are trying to solve.  The
> problem I
> > know of with the current deployment set up and LoaderRepositories is
> that
> > the only package type you can specify a LoaderRepsository in is an
> .ear. 
> > This however is easy to fix without more kinds of LoaderRepositories. 
> You
> > can already add several .ears to the same named LoaderRespository and
> (if
> > there are no bugs) redeploy each independently.
> 
> Could have been working but is not:
> 
>       if(
> di.repositoryName.equals(DeploymentInfo.DEFAULT_LOADER_REPOSITORY) ==
> false )
>       {
>          log.debug("Destroying ear loader
> repository:"+di.repositoryName);
>          try
>          {
>             this.server.unregisterMBean(di.repositoryName);
>          }
>          catch(Exception e)
>          {
>             log.warn("Failed to unregister ear loader repository", e);
>          }
>       }
> 
> The first ear to get redeployed will destroy the repository! And will
> make the other ear:s *very* confused.

OK, but thats a bug in the implementation.  Where is this code?

> 
> My experience is also that a component that gets its classloader swaped
> under the hood without beeing properly redeployed will behave very
> eratic. Thats why.

You can't do that with standard mbeans, the classs--mbean dependency is
tracked and used to undeploy/redeploy the mbean instance as the classloader
is cycled.  Maybe we can extend this to modelmbeans and ejbs.

thanks
david

> 
> //Peter
> 
> >  I don't know if all
> > dependencies between .ears are properly taken care of.
> > 
> > What will having a deeper hierarchy of LoaderRepositories get you?  I
> don't
> > understand the situation in which this would be useful.
> > 
> > Also, I am planning on moving the dependency computatations out of
> > ServiceController and into an mbean interceptor (with some global
> > supporting objects).
> > 
> > thanks
> > david jencks
> > 
> > 
> > 
> > On 2003.02.18 13:51 Peter Antman wrote:
> > > 
> > > 
> > > Hi,
> > > I would like to share some ideas about extensions to the current
> > > classloader to see if I am totally on the wrong track and if it
> > > perhaps would be a welcome addition to JBoss.
> > > 
> > > First I have to say that I still find the "new" classloader
> > > architecture somewhat limiting. If you have the following two
> > > conditions:
> > > 
> > > 1. You do not want components/classes globally available in the
> > >    repository because this stops from implementation/interface
> > >    versioning.
> > > 2. You want to be able to partition your stuff in several deployable
> > >    components (locally/remote), but which uses each other (EJB:s
> > >    calling EJB:s, MBeans calling MBeans (locally and through RMI),
> > >    MBeans calling EJB:s and EJB:s calling MBeans).
> > > 
> > > The you basically have to do a couple of things:
> > > 
> > > 1. Be very paranoid about what classes get stuffed into your
> > >    components.
> > > 2. Up to the last classloader change stuff almost every class at the
> > > global 
> > >    level anyhow, through lib or a dynamic classloader deployer, and
> > > after
> > >    the latest changes at least place all interfaces statically
> > >    available in the global classloader repository.
> > > 
> > > To me this hinders one of the aspects that has always was dear to
> > > me: hot redeploy.
> > > 
> > > Here is an idea (with a working test implementation) to make these
> > > obstacles possible to overcome:
> > > 
> > > Create a repository which may delegate to other repositories (not
> just
> > > a parent repository) and make this configurable in jboss-app.xml
> > > 
> > > Create dependency checks so that lifecykling  a component with a
> > > repository which have dependent repositories will make also these
> > > components "lifecyking".
> > > 
> > > Here is the basic steps I took  to create this:
> > > 
> > > 1. Create a DelegatingLoaderRepository which extends
> > >    HeirarchicalLoaderRepository3. The delegating repository takes a
> > >    list of repositories to delegate to if the normal loading fails.
> > > 
> > > 2. Factor out repository handling in EARDeployer, extends EARDeployer
> > >    with a DependantEARDeployer.
> > > 
> > >    EAR:s deployed through this new deployer may set up dependencies
> > >    between its own repository and the repositories of other
> > >    components. These other repositories must however also have been
> > >    created through the dependent deployer; because the repository
> must
> > >    be installed in the ServiceController.
> > > 
> > >    For a repository created through the DependantEARDeployer a
> > >    RepositoryProxy is created which will work as a proxy to track
> > >    dependency events from the ServiceController. The proxy also takes
> > >    the DeploymentInfo of the components; which makes it possible for
> > >    the proxy to redeploy its component!
> > > 
> > >          server.createMBean( "org.jboss.deployment.RepositoryProxy", 
> > > proxy);
> > >          serviceController.create(proxy,depends);
> > >          serviceController.start(proxy);
> > >          server.setAttribute( proxy, new
> > > Attribute("DeploymentInfo",di));
> > > 
> > >    The repository is then added to ServiceController in the start
> face
> > >    of the deployment (so that all its subcomponents is available and
> > >    added to the repository).
> > > 
> > > 
> > > So, how can this be used?
> > > 
> > > Say we have component A and B. B needs to call A.
> > > 
> > > jboss-app of A:
> > > <jboss-app>
> > >    <loader-repository>:loader=compA</loader-repository>
> > > 
> > > 
> > > jboss-app of B:
> > > <jboss-app>
> > >    <loader-repository
> > >    
> > > loaderRepositoryClass="org.jboss.mx.loading.DelegatingLoaderRepository"
> > >     objectName=":loader=compB"
> > >     ><depends><depends>:loader=compA</depends></loader-repository>
> > > 
> > > 
> > > When both components are deployed it is possible to:
> > > - redeploy B as ordinary
> > > - redeploy A with new classes -> B will be redeployed automatically
> > > 
> > > Extended example: component C is dependent of B:
> > > <jboss-app>
> > >    <loader-repository
> > >    
> > > loaderRepositoryClass="org.jboss.mx.loading.DelegatingLoaderRepository"
> > >     objectName=":loader=compC"
> > >     ><depends><depends>:loader=compB</depends></loader-repository>
> > >  
> > > 
> > > - Redeploying B will lead to C being redeployed:
> > > - Redeploying A will leas to B and C being redeployed.
> > > 
> > > 
> > > Circular example:
> > > B depends on A, C depends on B and A:
> > > 
> > >    <loader-repository
> > >    
> > > loaderRepositoryClass="org.jboss.mx.loading.DelegatingLoaderRepository"
> > >     objectName=":loader=compC"
> > >    
> > > 
>><depends><depends>:loader=compA</depends><depends>:loader=compB</depends></loader-repository>
> > > 
> > > This works nice to (but is actually not needed since C will see A
> > > through B).
> > > 
> > > What do you say: is there any hidden pitfalls you immediately see
> with
> > > this approach? Would it perhaps be something that should be
> integrated
> > > into JBoss?
> > > 
> > > //Peter
> > > -- 
> > > ------------------------------------------------------------
> > > Peter Antman      Chief Technology Officer, Development
> > > Technology in Media, Box 34105 100 26 Stockholm
> > > WWW: http://www.tim.se    WWW: http://www.backsource.org
> > > Email: [EMAIL PROTECTED]  
> > > Phone: +46-(0)8-506 381 11 Mobile: +46-(0)704 20 58 11
> > > ------------------------------------------------------------
> > > 
> > > 
> > > 
> > > -------------------------------------------------------
> > > This sf.net email is sponsored by:ThinkGeek
> > > Welcome to geek heaven.
> > > http://thinkgeek.com/sf
> > > _______________________________________________
> > > Jboss-development mailing list
> > > [EMAIL PROTECTED]
> > > https://lists.sourceforge.net/lists/listinfo/jboss-development
> > > 
> > > 
> > 
> > 
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
> > _______________________________________________
> > Jboss-development mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/jboss-development
> -- 
> ------------------------------------------------------------
> Peter Antman  Chief Technology Officer, Development
> Technology in Media, Box 34105 100 26 Stockholm
> WWW: http://www.tim.se        WWW: http://www.backsource.org
> Email: [EMAIL PROTECTED]      
> Phone: +46-(0)8-506 381 11 Mobile: +46-(0)704 20 58 11
> ------------------------------------------------------------
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
> The most comprehensive and flexible code editor you can use.
> Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
> www.slickedit.com/sourceforge
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 


-------------------------------------------------------
This SF.net email is sponsored by: SlickEdit Inc. Develop an edge.
The most comprehensive and flexible code editor you can use.
Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial.
www.slickedit.com/sourceforge
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to