Discussion: #MutableConfigurations, #LazyConfigurationAndInstantiation, #CyclicDependences, & #DiscardableModules

mark.reinhold at oracle.com mark.reinhold at oracle.com
Mon Dec 5 23:07:56 UTC 2016


2016/11/29 18:47:59 -0800, david.lloyd at redhat.com:
> On 11/29/2016 06:09 PM, mark.reinhold at oracle.com wrote:
>> 2016/11/22 13:19:19 -0800, david.lloyd at redhat.com:
>>> On 11/21/2016 03:52 PM, mark.reinhold at oracle.com wrote:
>>>> ...
>>>> 
>>>> If you're using an approach similar to what I suggested for OSGi [1]
>>>> then you should be able to implement cycles amongst JBoss modules by
>>>> inserting the necessary readability edges after each module is
>>>> instantiated in its own layer.  This will be much easier with the new
>>>> API proposed for #ReadabilityAddedByLayerCreator [2].
>>> 
>>> I asked earlier whether this allows the class resolver
>> 
>> (What's a "class resolver" in this context?)
> 
> The part of the class loader that resolves references between classes 
> and performs linkage.  There seems to be no non-overloaded term for 
> this, anymore.

If that's what you mean by "class resolver" then you're really talking
about class loaders, not the module system, or at least not JPMS, since
JPMS doesn't change how class loading works.

>> ...
>> 
>> If you want to allow cycles amongst your own modules then you can resolve
>> them yourself and add whatever cycle-inducing readability edges you need.
>> That is, as I understand it, how Watson's OSGi embedding works.
> 
> But it fails when the actual classes have direct references to one 
> another.

Can you be more specific?  How does it fail?  Is Watson's OSGi embedding
broken?

In addition to writing your own resolver you can -- and I've assumed that
you, like Watson, would -- write your own class loaders to resolve class
references in whatever way you require, even looking up classes in nearby
cyclically-related modules according to whatever module-graph data
structure you construct.

Unless that approach is broken then my original question remains [3]:

  Is this approach workable for JBoss Modules as well?  If so then I'd
  like to close these issues out; if not then I'd like to understand if
  there are additional, smaller changes that would make this approach
  acceptable while avoiding the complexity of complete solutions to
  these issues.

- Mark


[1] http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2016-October/000410.html
[2] http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2016-November/000456.html
[3] http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2016-November/000458.html


More information about the jpms-spec-experts mailing list