Hi Romain,

I get your point now...
Question: Why do we need to do it[1]?

if (loader != null) {
    Thread.currentThread().setContextClassLoader(loader);
    if (loader != ClassLoader.getSystemClassLoader()) {
        System.setProperty("openejb.classloader.first.disallow-system-loading",
"true");
    }
}


Do we really need to change it? Why?
I believe which the CLI has you owner classpath and we don't need to change
the default on to execute our commands. Just try understand why we are
doing it.

[1]
https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/cli/Bootstrap.java#L151-L156

Em ter, 20 de nov de 2018 às 17:32, Daniel Cunha <daniels...@gmail.com>
escreveu:

> Hi Romain,
>
> Ok, I'll create a scenario for it.
>
> Thank you.
>
> Em ter, 20 de nov de 2018 às 17:29, Romain Manni-Bucau <
> rmannibu...@gmail.com> escreveu:
>
>> Hi Daniel
>>
>> Do you think you can assert the classloader in the execution thread didnt
>> change after the call? Was one concern and i didnt find the matching
>> assert
>>
>> Le mar. 20 nov. 2018 20:00, Daniel Cunha <daniels...@apache.org> a écrit
>> :
>>
>> > Hi folks,
>> >
>> > I've added a new test with JAXRS, calling a command in my endpoint from
>> > Bootstrap CLI.
>> > Please review the changes on my PR[1] and let me know what do you think
>> > about it.
>> >
>> > Thank you. :)
>> >
>> > [1] https://github.com/apache/tomee/pull/176
>> >
>> > Em seg, 19 de nov de 2018 às 13:57, Daniel Cunha <daniels...@gmail.com>
>> > escreveu:
>> >
>> > > Hi Jon,
>> > >
>> > > ok. I got it! :)
>> > >
>> > > Em seg, 19 de nov de 2018 às 13:49, Jonathan Gallimore <
>> > > jonathan.gallim...@gmail.com> escreveu:
>> > >
>> > >> On Mon, Nov 19, 2018 at 4:30 PM Daniel Cunha <daniels...@gmail.com>
>> > >> wrote:
>> > >>
>> > >> > Hi guys,
>> > >> >
>> > >> > I updated the PR with some chages:
>> > >> > 1 - Move BasicURLClassPath.CustomizableURLClassLoader to be public.
>> > >> > 2 - I'm using BasicURLClassPath.CustomizableURLClassLoader instead
>> of
>> > >> > DynamicClassLoader (class that I created)
>> > >> > 3- DynamicClassLoader is not needed anymore. Was removed from the
>> PR.
>> > >> > 3 - Added more tests:
>> > >> >     - Standalone client that has its own main and delegates to the
>> CLI
>> > >> main
>> > >> >     - As above, but perhaps with the standalone client creating a
>> > >> > classloader
>> > >> > with the CLI jars and then launching it
>> > >> >
>> > >> > Question:
>> > >> >
>> > >> > @Jon,
>> > >> > what do you want me mean with: A webapp calling commands in the
>> CLI?
>> > >> >
>> > >>
>> > >> Hopefully I can answer that one in a straightforward way :). Try
>> > creating
>> > >> a
>> > >> servlet that loads the Bootstrap CLI class, and invokes some methods.
>> > >> Effectively you'd be calling the TomEE command line commands from a
>> > >> servlet. That use case hadn't occurred to me, but it sounds like one
>> > worth
>> > >> trying.
>> > >>
>> > >> That would probably need to sit
>> > >> under
>> > arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests.
>> > >>
>> > >> Jon
>> > >>
>> > >>
>> > >> >
>> > >> > Command is a class with main method, if I've it deployed in my
>> library
>> > >> > folder, it should works fine, I just need to create a instance and
>> > call
>> > >> the
>> > >> > main.
>> > >> > Same will be if I try execute it with Process (that is exactly
>> what we
>> > >> are
>> > >> > testing).
>> > >> >
>> > >> > Em sex, 2 de nov de 2018 às 07:53, Jonathan Gallimore <
>> > >> > jonathan.gallim...@gmail.com> escreveu:
>> > >> >
>> > >> > > I'm following this thread with some interest. What would be some
>> > good
>> > >> > tests
>> > >> > > to make sure these cases are covered off? Some suggestions in
>> > >> addition to
>> > >> > > the existing test:
>> > >> > >
>> > >> > > * Standalone client that has its own main and delegates to the
>> CLI
>> > >> main
>> > >> > > * As above, but perhaps with the standalone client creating a
>> > >> classloader
>> > >> > > with the CLI jars and then launching it
>> > >> > > * A webapp calling commands in the CLI
>> > >> > >
>> > >> > > Any others? These are interesting use cases that I hadn't
>> > considered -
>> > >> > this
>> > >> > > is interesting.
>> > >> > >
>> > >> > > Jon
>> > >> > >
>> > >> > >
>> > >> > >
>> > >> > > On Wed, Oct 31, 2018 at 2:30 PM Romain Manni-Bucau <
>> > >> > rmannibu...@gmail.com>
>> > >> > > wrote:
>> > >> > >
>> > >> > > > Le mer. 31 oct. 2018 à 14:52, Daniel Cunha <
>> daniels...@gmail.com>
>> > a
>> > >> > > écrit
>> > >> > > > :
>> > >> > > >
>> > >> > > > > Em seg, 29 de out de 2018 às 14:01, Jonathan Gallimore <
>> > >> > > > > jonathan.gallim...@gmail.com> escreveu:
>> > >> > > > >
>> > >> > > > > > We should write a test case for both of these, and agree on
>> > >> them.
>> > >> > I'd
>> > >> > > > > like
>> > >> > > > > > to be able to merge this in with confidence, and without
>> the
>> > >> tests
>> > >> > I
>> > >> > > > > don't
>> > >> > > > > > see how we can do that.
>> > >> > > > > >
>> > >> > > > > > Jon
>> > >> > > > > >
>> > >> > > > > > On Mon, Oct 29, 2018 at 3:35 PM Romain Manni-Bucau <
>> > >> > > > > rmannibu...@gmail.com>
>> > >> > > > > > wrote:
>> > >> > > > > >
>> > >> > > > > > > Hi Daniel,
>> > >> > > > > > >
>> > >> > > > > > > the point is that this code is reused in several places
>> so
>> > we
>> > >> > must
>> > >> > > be
>> > >> > > > > as
>> > >> > > > > > > clean as we can, here the cases I had in mind:
>> > >> > > > > > >
>> > >> > > > > > > 1. reused main in another main (so an app calls the
>> main):
>> > >> here
>> > >> > the
>> > >> > > > > > pitfall
>> > >> > > > > > > is that the property
>> > >> > openejb.classloader.first.disallow-system-load
>> > >> > > > is
>> > >> > > > > > not
>> > >> > > > > > > resetted and the TCLL neither so after the main you use a
>> > >> closed
>> > >> > > > > > > classloader (so will likely easily fail)
>> > >> > > > > >
>> > >> > > > >
>> > >> > > > > I really didn't get your point. Side note we are create a
>> > >> classloader
>> > >> > > > only
>> > >> > > > > for tomee cli execution, which keep alive only for a short
>> time
>> > >> > during
>> > >> > > > > command execution.
>> > >> > > > >
>> > >> > > > > That part of code is not reused in another place, if yes,
>> just
>> > >> point
>> > >> > me
>> > >> > > > > where, because I can't find it.
>> > >> > > > >
>> > >> > > > > It will close only after the program finish, since it is
>> inside
>> > a
>> > >> > > > try-catch
>> > >> > > > > block, no?
>> > >> > > > >
>> > >> > > >
>> > >> > > > Assuming the main is launch but this main is sometimes launched
>> > >> > > > programmatically (like in a webapp)
>> > >> > > > When not you are right
>> > >> > > >
>> > >> > > >
>> > >> > > > >
>> > >> > > > >
>> > >> > > > > > > 2. if a user relies in java 8 on the classloader being
>> the
>> > >> system
>> > >> > > one
>> > >> > > > > > then
>> > >> > > > > > > your new classloader level breaks it so we shouldnt
>> create
>> > >> this
>> > >> > new
>> > >> > > > > > > classloader when not needed and the old ClassPath impl is
>> > >> working
>> > >> > > > IMO.
>> > >> > > > > We
>> > >> > > > > > > can enrich it with a warn log saying "it will fail in
>> next
>> > >> > version"
>> > >> > > > > (and
>> > >> > > > > > we
>> > >> > > > > > > drop that code after 1 or 2 releases). Idea is to not
>> break
>> > >> > > directly
>> > >> > > > > > users
>> > >> > > > > > > who can not even know some of the libs they added in the
>> > >> > classpath
>> > >> > > > for
>> > >> > > > > > > logging purposes rely on that classloader setup - random
>> > >> example
>> > >> > > > indeed
>> > >> > > > > > ;).
>> > >> > > > > > >
>> > >> > > > > >
>> > >> > > > >
>> > >> > > > > Yeah, I probably could use the SystemClassPath, but it is
>> doing
>> > >> much
>> > >> > > more
>> > >> > > > > than I need to CLI. I don't think that I need to change the
>> > >> > > > java.class.path
>> > >> > > > > property to make it works or other property like
>> > >> > > > > openejb.classloader.first.disallow-system-load.
>> > >> > > > >
>> > >> > > >
>> > >> > > > We should likely be cleaner here but not your PR, fair enough
>> > >> > > >
>> > >> > > >
>> > >> > > > >
>> > >> > > > > And to be honest, I didn't understand what is
>> > >> > > > > openejb.classloader.first.disallow-system-load and why do we
>> > have
>> > >> it.
>> > >> > > :)
>> > >> > > > >
>> > >> > > >
>> > >> > > > It is used in the "webapp" loader to check if we should load
>> some
>> > >> well
>> > >> > > > known classes from the system classloader or not.
>> > >> > > > It is likely the kind of property you rely on when you want to
>> be
>> > >> > > > embeddable but also standalone.
>> > >> > > >
>> > >> > > >
>> > >> > > > >
>> > >> > > > >
>> > >> > > > > > > Romain Manni-Bucau
>> > >> > > > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>> > >> > > > > > > <https://rmannibucau.metawerx.net/> | Old Blog
>> > >> > > > > > > <http://rmannibucau.wordpress.com> | Github <
>> > >> > > > > > > https://github.com/rmannibucau> |
>> > >> > > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> |
>> Book
>> > >> > > > > > > <
>> > >> > > > > > >
>> > >> > > > > >
>> > >> > > > >
>> > >> > > >
>> > >> > >
>> > >> >
>> > >>
>> >
>> https://www.packtpub.com/application-development/java-ee-8-high-performance
>> > >> > > > > > > >
>> > >> > > > > > >
>> > >> > > > > > >
>> > >> > > > > > > Le lun. 29 oct. 2018 à 16:14, Daniel Cunha <
>> > >> > daniels...@apache.org>
>> > >> > > a
>> > >> > > > > > > écrit :
>> > >> > > > > > >
>> > >> > > > > > > > Hi,
>> > >> > > > > > > >
>> > >> > > > > > > > I updated the PR with tests!
>> > >> > > > > > > >
>> > >> > > > > > > > Em seg, 29 de out de 2018 às 08:27, Jonathan Gallimore
>> <
>> > >> > > > > > > > jonathan.gallim...@gmail.com> escreveu:
>> > >> > > > > > > >
>> > >> > > > > > > > > I saw your note on the PR regarding Romain's
>> feedback.
>> > >> > > > > > > > >
>> > >> > > > > > > > > For visibility here, Romain is querying whether this
>> > patch
>> > >> > will
>> > >> > > > > cause
>> > >> > > > > > > an
>> > >> > > > > > > > > issue with folks calling the CLI with a custom
>> classpath
>> > >> > using
>> > >> > > > > `java
>> > >> > > > > > > -cp
>> > >> > > > > > > > > ...` under Java 8. I'd suggest we add a test for it,
>> > which
>> > >> > > looks
>> > >> > > > to
>> > >> > > > > > be
>> > >> > > > > > > > what
>> > >> > > > > > > > > Daniel is doing.
>> > >> > > > > > > > >
>> > >> > > > > > > > > Thanks guys.
>> > >> > > > > > > > >
>> > >> > > > > > > > > Jon
>> > >> > > > > > > > >
>> > >> > > > > > > > > On Thu, Oct 25, 2018 at 12:35 PM Daniel Cunha <
>> > >> > > > > daniels...@apache.org
>> > >> > > > > > >
>> > >> > > > > > > > > wrote:
>> > >> > > > > > > > >
>> > >> > > > > > > > > > Hi Folks,
>> > >> > > > > > > > > >
>> > >> > > > > > > > > > I sent a PR on TomEE to fix the TOMEE-2253. I got a
>> > lot
>> > >> of
>> > >> > > > > feedback
>> > >> > > > > > > > from
>> > >> > > > > > > > > > Romain (thank you Romain for all comments and help)
>> > >> > > > > > > > > >
>> > >> > > > > > > > > > I believe which we are in good shape to merge.
>> > >> > > > > > > > > > The changes cover from Java 8 till Java 11 which
>> not
>> > >> > provide
>> > >> > > > any
>> > >> > > > > > > impact
>> > >> > > > > > > > > for
>> > >> > > > > > > > > > TomEE or application deployed on it.
>> > >> > > > > > > > > >
>> > >> > > > > > > > > > Please, look at the PR and let me know what you
>> think.
>> > >> > > > > > > > > >
>> > >> > > > > > > > > > PR: https://github.com/apache/tomee/pull/176
>> > >> > > > > > > > > >
>> > >> > > > > > > > > > --
>> > >> > > > > > > > > > Daniel "soro" Cunha
>> > >> > > > > > > > > > https://twitter.com/dvlc_
>> > >> > > > > > > > > >
>> > >> > > > > > > > >
>> > >> > > > > > > >
>> > >> > > > > > > >
>> > >> > > > > > > > --
>> > >> > > > > > > > Daniel "soro" Cunha
>> > >> > > > > > > > https://twitter.com/dvlc_
>> > >> > > > > > > >
>> > >> > > > > > >
>> > >> > > > > >
>> > >> > > > >
>> > >> > > > > Thank you! :)
>> > >> > > > > --
>> > >> > > > > Daniel "soro" Cunha
>> > >> > > > > https://twitter.com/dvlc_
>> > >> > > > >
>> > >> > > >
>> > >> > >
>> > >> >
>> > >> >
>> > >> > --
>> > >> > Daniel "soro" Cunha
>> > >> > https://twitter.com/dvlc_
>> > >> >
>> > >>
>> > >
>> > >
>> > > --
>> > > Daniel "soro" Cunha
>> > > https://twitter.com/dvlc_
>> > >
>> >
>> >
>> > --
>> > Daniel "soro" Cunha
>> > https://twitter.com/dvlc_
>> >
>>
>
>
> --
> Daniel "soro" Cunha
> https://twitter.com/dvlc_
>


-- 
Daniel "soro" Cunha
https://twitter.com/dvlc_

Reply via email to