On 12/06/2020 14:15, Raymond Auge wrote:
> Hey Mark,
> 
> I'll have to get back to this convo in a day or so.
> 
> I'll test your theory but at first glance it sounds like going in the
> right direction.

No rush. I'd rather take time and get this right.

Thanks,

Mark


> 
> - Ray
> 
> On Thu, Jun 11, 2020 at 5:08 PM Mark Thomas <ma...@apache.org
> <mailto:ma...@apache.org>> wrote:
> 
>     On 11/06/2020 21:59, Mark Thomas wrote:
>     > On 11/06/2020 21:24, Raymond Auge wrote:
>     >> This can totally be fixed in configuration. There is no problem.
>     I just
>     >> wanted to make sure that in doing so we wouldn't just be pushing some
>     >> dirt under the rug so to speak.
>     >
>     > I'm concerned we might be doing exactly that now we are heading into a
>     > JPMS world and this seems like an opportunity to pause and see if
>     there
>     > is a better way.
>     >
>     > I've yet to get my head around JPMS and I might be mis-remembering
>     some
>     > of the things I have read.
>     >
>     > bootstrap.jar has everything it needs to start, create the class
>     loader
>     > hierarchy, switch to the catalinaLoader (which can see all the JARs
>     > rather than just bootstrap.jar and tomcat-juli.jar) and then continue
>     > with start-up.
>     >
>     > It does things this way because the class loader hierarchy and the
>     > configuration of the class loaders is configurable. So we can't
>     just put
>     > everything on the class path before starting the JVM.
>     >
>     > Any static analysis of bootstrap.jar is always going to show it having
>     > dependencies that won't be visible until Tomcat starts and the
>     > catalinaLoader is up and running. To what extent does this cause
>     > complications for JPMS and/or OSGi?
>     >
>     > Is this completely manageable with configuration? If it is, I
>     think I'd
>     > lean towards a configuration based solution primarily for backwards
>     > compatibility reasons. What are the arguments against this approach?
>     >
>     > If this completely manageable with configuration are there any
>     > particular classes that are causing more than their fair share of pain
>     > where a small packaging change would provide a relatively large
>     benefit?
> 
>     Sorry. More thoughts occurred to me as I looked at the PRs again.
> 
>     If we created o.a.c.startup.Constants, defined the constants required by
>     the bootstrap classes there and then referenced those from o.a.c.Globals
>     would that help?
> 
>     Is it Tool's use of ExceptionUtils that is causing that class to be
>     needed? If so would making Bootstrap.handleThrowable() package private
>     and using that instead help?
> 
>     Mark
> 
>     >
>     > Mark
>     >
>     >
>     >>
>     >> :)
>     >>
>     >> - Ray
>     >>
>     >> On Thu, Jun 11, 2020 at 3:25 PM Raymond Auge
>     <raymond.a...@liferay.com <mailto:raymond.a...@liferay.com>
>     >> <mailto:raymond.a...@liferay.com
>     <mailto:raymond.a...@liferay.com>>> wrote:
>     >>
>     >>     To be clear, it's not necessarily having _all of a package_. It's
>     >>     more about all the reachable class references. For instance jdeps
>     >>     looks at classes and finds any reachable references. So does
>     bnd for
>     >>     calculating OSGi metadata.
>     >>
>     >>     So the issue is not really about packages, it's about having
>     missing
>     >>     class references and whether those should be elided in
>     >>     configuration, or simple fixed in packaging (which again does not
>     >>     necessarily mean full packages :)
>     >>
>     >>     - Ray
>     >>
>     >>     On Thu, Jun 11, 2020 at 3:20 PM Rémy Maucherat
>     <r...@apache.org <mailto:r...@apache.org>
>     >>     <mailto:r...@apache.org <mailto:r...@apache.org>>> wrote:
>     >>
>     >>         On Thu, Jun 11, 2020 at 9:01 PM Mark Thomas
>     <ma...@apache.org <mailto:ma...@apache.org>
>     >>         <mailto:ma...@apache.org <mailto:ma...@apache.org>>> wrote:
>     >>
>     >>             Hi,
>     >>
>     >>             As discussed in PR#298 [1], properly/fully/correctly
>     >>             supporting JPMS /
>     >>             OSGi gets trickier than necessary with the bootstrap JAR
>     >>             because of the
>     >>             way we currently package it with the minimum that it
>     needs
>     >>             and duplicate
>     >>             some classes.
>     >>
>     >>             My simplistic understanding is that having all of a Java
>     >>             package in a
>     >>             single JAR makes JPMS and OSGi a lot simpler.
>     Further, our
>     >>             current
>     >>             approach may not be 100% compatible with one or both
>     of them.
>     >>
>     >>             The trade-offs involved here are:
>     >>             - having all of a package in a JAR simplifies JPMS
>     and OSGi
>     >>             - We want to keep the bootstrap JAR small (is this
>     much of a
>     >>             concern?)
>     >>             - We don't want duplicate code (maintenance overhead)
>     >>             - Bootstrap uses various utility functions from the
>     Tomcat
>     >>             code base
>     >>
>     >>             I'm wondering if there is a better approach we could
>     adopt
>     >>             that makes
>     >>             JPMS / OSGi simpler without compromising too much on the
>     >>             other trade-offs.
>     >>
>     >>             The sort of thing I have in mind is:
>     >>             - move everything out of o.a.c.startup that doesn't
>     need to
>     >>             be there to
>     >>               either some new package (name TBD) or an existing
>     package
>     >>
>     >>
>     >>         That means way too many risky changes IMO, the listeners
>     in the
>     >>         startup package are often extended to add features so
>     they need
>     >>         to remain in the catalina.startup package.
>     >>          
>     >>
>     >>             - create an o.a.c.startup.util package and, during
>     the build
>     >>             process,
>     >>               copy and package rename any utility classes the
>     remaining
>     >>             classes in
>     >>               o.a.c.startup depend on
>     >>
>     >>
>     >>         Good idea, when I read your requirements, I thought about
>     >>         package renaming. So I think we could use package
>     renaming for
>     >>         everything that bootstrap.jar has to a tomcat.bootstrap or
>     >>         catalina.bootstrap package.
>     >>
>     >>         Rémy
>     >>          
>     >>
>     >>
>     >>             The end result should be a nice clean mapping of
>     packages to
>     >>             JARs.
>     >>
>     >>             Thoughts?
>     >>
>     >>             Mark
>     >>
>     >>
>     >>
>     >>             [1] https://github.com/apache/tomcat/pull/298
>     >>
>     >>           
>      ---------------------------------------------------------------------
>     >>             To unsubscribe, e-mail:
>     dev-unsubscr...@tomcat.apache.org
>     <mailto:dev-unsubscr...@tomcat.apache.org>
>     >>             <mailto:dev-unsubscr...@tomcat.apache.org
>     <mailto:dev-unsubscr...@tomcat.apache.org>>
>     >>             For additional commands, e-mail:
>     dev-h...@tomcat.apache.org <mailto:dev-h...@tomcat.apache.org>
>     >>             <mailto:dev-h...@tomcat.apache.org
>     <mailto:dev-h...@tomcat.apache.org>>
>     >>
>     >>
>     >>
>     >>     --
>     >>     *Raymond Augé*
>     >>     <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
>     >>     Senior Software Architect *Liferay, Inc.*
>     >>     <http://www.liferay.com> (@Liferay)
>     >>
>     >>
>     >>
>     >> --
>     >> *Raymond Augé*
>     >> <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
>     >> Senior Software Architect *Liferay, Inc.*
>     >> <http://www.liferay.com> (@Liferay)
>     >
>     >
>     > ---------------------------------------------------------------------
>     > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>     <mailto:dev-unsubscr...@tomcat.apache.org>
>     > For additional commands, e-mail: dev-h...@tomcat.apache.org
>     <mailto:dev-h...@tomcat.apache.org>
>     >
> 
> 
>     ---------------------------------------------------------------------
>     To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>     <mailto:dev-unsubscr...@tomcat.apache.org>
>     For additional commands, e-mail: dev-h...@tomcat.apache.org
>     <mailto:dev-h...@tomcat.apache.org>
> 
> 
> 
> -- 
> *Raymond Augé*
> <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
> Senior Software Architect *Liferay, Inc.*
> <http://www.liferay.com> (@Liferay)


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to