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. - Ray On Thu, Jun 11, 2020 at 5:08 PM Mark Thomas <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>> 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>> wrote: > >> > >> On Thu, Jun 11, 2020 at 9:01 PM Mark Thomas <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> > >> 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) > >> > >> > >> > >> -- > >> *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 > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: 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)