Hi Romain and everyone,

I have just recently become aware of this issue with Java 9,
and I'm not sure I understand everything yet. But my spontaneous
reaction is that a classloader hack would be an acceptable solution,
because it's easy to understand for ordinary devops people.

Does anyone know if the Tomcat core team has been discussing this?
I haven't had time to follow any of the lists for ages unfortunately,
and googling has not been very helpful to me.

-- 
Bjorn Danielsson
Cuspy Code AB


Romain Manni-Bucau <[email protected]> wrote:
> Hey guys,
>
> not sure anyone tried to run tomee on java 9 but wondered if j9 module
> system was kind of "fixed" since it was really broken last time i tested
> and tried to run our simple-singleton sample today.
>
> Have to admit I tend to think it is a feature breaiking java ecosystem but
> here is a few more pragmatic feedback and how we can make this module
> running:
>
> - (easy) ORB/corba is not exported by default so we need to check by
> reflection we can access it or not, I guess the fix for us is to remove
> corba reference from our codebase, AFAIK it is not used and no more needed.
> - (medium) bytecode reading: our current code base can read until java 8
> bytecode and we need to upgrade xbean-asm-shaded and xbean-finder-shaded
> (xbean snapshot is ready). We also need to upgrade the finders we have in
> our codebase to ASM6 (java 9) but nothing hurting a lot - that's what we do
> for each new java version.
> - (unknown) we need all our dependencies to upgrade
> - (open and likely hard if it takes into account our full stack) to run the
> simple-singleton example I needed to add jaxb dependency (alternative is to
> activate the module) and open a few modules, typically:
>
> --add-modules java.logging --add-opens
> java.logging/java.util.logging=ALL-UNNAMED
> --add-opens=java.base/java.lang=ALL-UNNAMED
>
> This globally request to add to our code the missing permission in the JVM
> (keep in mind i ran simple-singleton which doesnt cover much of our
> codebase/stack). The issue is this option is on the JVM so we can hide it
> in tomee in catalina scripts and in arquillian through RemoteServer but for
> embedded tests we'll require the user to do it.
>
> We can likely rework a bit our code to not require them all (some are easy
> to workaround like the logging one or the GET_PACKAGE usage for @Vetoed)
> but when we'll start to create a module-info.java ourself and our stack
> we'll not just be in the unamed module merged but in several modules we'll
> need to maintain these references exactly like we did when we were still
> handling OSGi and even if maven helps a bit it breaks the ability to change
> a little bit the stack (it was common to upgrade cxf for instance) since it
> depends if cxf export is stable or not.
>
> I'm not yet sure how we want to tackle it. Good news is "yes it will work".
> Bad one is "yes it will mess up each version".
>
> I fear jigsaw can't be removed from java 9 anymore (not sure why to be
> honest) but I start to wonder if we should do a system (subclassloader?) to
> completely bypass it and keep user experience smooth.
>
> Anyone having some other feedback?
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://blog-rmannibucau.rhcloud.com> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>

Reply via email to