Please see updated https://github.com/apache/tomcat/pull/296

- Ray

On Sat, Jun 13, 2020 at 3:35 PM Raymond Auge <raymond.a...@liferay.com>
wrote:

> Hey Mark, I tested those changes and they solve the packaging issue for
> both jpms and OSGi.
>
> I'll update the pr to reflect the change later today I hope.
>
> I did encounter some further jpms related issues but those were beyond
> packaging and need other questions answered before moving forward.
>
> - Ray
>
> On Sat, Jun 13, 2020, 12:49 Mark Thomas, <ma...@apache.org> wrote:
>
>> On 13/06/2020 03:53, Raymond Auge wrote:
>> > Actually Bootstrap has a comment
>> >
>> > // Copied from ExceptionUtils since that class is not visible during
>> start
>> >
>> > So it seems like perhaps the change should be ported.
>>
>> Agreed. So if we do that and make the other changes I outlined where
>> does that leave things from a JPMS / OSGi point of view?
>>
>> Mark
>>
>>
>> >
>> >  - Ray
>> >
>> > On Fri, Jun 12, 2020 at 10:45 PM Raymond Auge <raymond.a...@liferay.com
>> > <mailto:raymond.a...@liferay.com>> wrote:
>> >
>> >     There is one difference between
>> >
>> >     org.apache.tomcat.util.ExceptionUtils.handleThrowable(Throwable)
>> >
>> >     and
>> >
>> >     org.apache.catalina.startup.Bootstrap.handleThrowable(Throwable)
>> >
>> >     that is that ExceptionUtils also swallows StackOverflowError while
>> >     Bootstrap does not.
>> >     Should that be ported over or is it a deal breaker? An option would
>> >     be to add an additional method to Bootstrap that behaves like
>> >     ExceptionUtils.
>> >
>> >     - Ray
>> >
>> >
>> >     On Fri, Jun 12, 2020 at 9:27 AM Mark Thomas <ma...@apache.org
>> >     <mailto:ma...@apache.org>> wrote:
>> >
>> >         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>
>> >         > <mailto: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>>
>> >         >     >> <mailto: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>>
>> >         >     >>     <mailto: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>>
>> >         >     >>         <mailto: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>>
>> >         >     >>             <mailto: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>>
>> >         >     >>             <mailto: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>
>> >         >     <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>>
>> >         >     >
>> >         >
>> >         >
>> >         >
>> >
>>   ---------------------------------------------------------------------
>> >         >     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)
>> >
>> >
>> >
>>  ---------------------------------------------------------------------
>> >         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
>>
>>

-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)

Reply via email to