I agree that the most simple option is to change the launcher to use the
app class loader as the parent classloader.  The default for that has been
boot for many years.  This has provided us with a level of isolation from
the extension and application class loaders.  We could change the default,
but I don't think that has no risk associated with it.

I had not thought about the fact that frameworks must fail to install
extension bundles with types they do not understand.  So it is true that
this fragment will fail to install on other frameworks (if they are
performing the proper check).  In equinox we treat the extension type
extclasspath as a special type and for packages exported by such a fragment
we delegate class loads to the extension class loader no matter what the
parent class loader of the framework is.  So it should not matter what the
framework's class path is in this case.  But don't get me wrong.  I would
much prefer we did not use this option.  In fact I don't even really want
to support such a concept of extension system bundle fragments at all in
the future since I think it will be difficult to support them if we start
running with Java Modularity support in the VM.

Even if we do change the default of the framework's parent class loader, we
still need a way to configure the system bundle to export the JavaFX
packages.

Tom





From:   BJ Hargrave/Austin/IBM@IBMUS
To:     Equinox development mailing list <equinox-dev@eclipse.org>,
Date:   11/13/2012 04:47 PM
Subject:        Re: [equinox-dev] Equinox,      PDE and packages from the
            ExtensionClasspath (e.g. JavaFX)
Sent by:        equinox-dev-boun...@eclipse.org



> > Fragment-Host: system.bundle; extension:=extclasspath
>
> Would this extension:=extclasspath cause problems to other
> OSGi-Implementations like e.g. felix?

A compliant framework should reject this manifest since the standard
directive does not specify a valid value.

If you are thinking of having a non-standard, Equinox-specific value for a
standard directive, why not just add an Equinox-specific manifest header or
Equinox-specific directive?

Fragment-Host: system.bundle; x-appclasspath:=ext

This does not sound like it would work in general anyway. What happens when
the framework is launched from code whose classpath does not include ext? I
assume the option here is either use the bootclasscloader for the parent of
the classloader used to load the framework or use the current classloader
for the parent of the classloader used to load the framework.

--


                                                                       
 BJ Hargrave                                                           
 Senior Technical Staff Member, IBM                   office: +1 386 848 1781
 OSGi Fellow and CTO of the OSGi Alliance             mobile: +1 386 848 3788
 hargr...@us.ibm.com                                                   
                                                                       


_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

<<inline: graycol.gif>>

_______________________________________________
equinox-dev mailing list
equinox-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to