----- Original message -----
> Hi Peter,
> 
> I'm not sure we're on the same wavelength here, I've inlined some
> comments below.
> 
> Regards
> 
> Dennis
> 
> On Feb 21, 2014, at 553PM, Peter <j...@zeus.net.au> wrote:
> 
> > To minimise the chances of duplicate class loading of service api and
> > avoid implementation class collisions.
> 
> You'll never get duplicate class loading, because of the hierarchical
> structure of class loaders.
> 

I'm not doing a good job explaining, see section "4.1 Type Conflicts" in this 
paper:

http://www.sorcersoft.org/resources/jini/smli_tr-2006-149.pdf

Then consider what happens when common classes are not available on the class 
path at runtime.

Is my understanding correct; Maven is capable of resolving service api 
dependencies into a common parent ClassLoader?

> > 
> > This maximises compatibility among proxy's and services common service
> > api classes.
> > 
> > Granted, there will be cases where clients don't have service api
> > loaded for particular services,
> 
> Clients must have service APIs in their classpath, they would never be
> able to load a service's interface (to perform a discovery for example)
> otherwise.
> 
> > in these cases the downloaded service api classes will reside in the
> > same child ClassLoader as the proxy.   This isn't a problem in the
> > majority of cases, but for a smart proxy that uses other services, it
> > could be problematic.
> 
> Clients will dynamically load a service's proxy, a service API will
> always be in the client's classpath. You need to know a-priori the
> service type you're looking for and intend to use after all.
> 
> 
> > 
> > Codebase provisioning has an advantage over downloaded code, because
> > such a system can ensure all service api is visible to all services
> > and proxy's, even dynamically after deployment.
> > 
> > Maven or OSGi can provision for maximum compatibility among services
> > and proxy's.
> 
> Maven does absolutely nothing in this regard, and in the case of OSGi,
> we are dealing with a completely different class loading animal.
> Provisioning systems that either use Maven's dependency resolution
> (Aether) to make resolved artifacts loadable as local jars are a
> different story.
> 

Ok, sorry, wrong assumption, can you explain a little more about how you're 
using Maven with Rio? 

Regards,

Peter.

> 
> > 
> > But because these systems also can use non hirarchical relationships
> > among ClassLoaders, they can experience class loading deadlock, when
> > complex ClassLoader relationships are employed, which parallel class
> > loading in Java 7 tries to address. Unfortunately parallel class
> > loading is a naive attempt to solve this problem, causing a memory
> > consumption explosion with a map based locking system, hopefully a non
> > blocking concurrent class loading system will be implemented in Java 9
> > to fix class loading deadlock, once and for all.
> > 
> > Thankfully class loading relationships among service api, services and
> > proxy's are simple, a hierarchical parent child relationship suffices.
> >   Only complex class relationships cause class loading deadlock.
> > 
> > Regards,
> > 
> > Peter.
> > 
> > ----- Original message -----
> > > 
> > > [
> > > https://issues.apache.org/jira/browse/RIVER-435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13908727#comment-13908727
> > > ] 
> > > 
> > > Dennis Reedy commented on RIVER-435:
> > > ------------------------------------
> > > 
> > > I'm not sure what the real consequences are if a classloader that
> > > loads service implementation classes and then is a parent to a
> > > classloader then then is used to load either a discovered service
> > > (or receives a remote object as a parameter) is.
> > > 
> > > There will be another classloader created by underlying RMI
> > > infrastructure to load the class (since the service classloader) will
> > > not have the other service's proxy classes in it's search path). I
> > > may be missing something, but what are the issues here?
> > > 
> > > > Proposed Standard for Single-Archive Service Deployment Packaging
> > > > -----------------------------------------------------------------
> > > > 
> > > > Key: RIVER-435
> > > > URL: https://issues.apache.org/jira/browse/RIVER-435
> > > > Project: River
> > > > Issue Type: Improvement
> > > > Components: com_sun_jini_start
> > > > Reporter: Greg Trasuk
> > > > Attachments: SingleArchiveServiceDeployment.docx,
> > > > SingleArchiveServiceDeployment.pdf
> > > > 
> > > > 
> > > > The attached document proposes the layout and general requirements
> > > > for an archive file to support simplified "drag-and-drop"
> > > > deployment for services that adhere to the Service Starter
> > > > conventions.
> > > 
> > > 
> > > 
> > > --
> > > This message was sent by Atlassian JIRA
> > > (v6.1.5#6160)
> > 
> 

Reply via email to