2017-03-20 21:17 GMT+01:00 Bjorn Danielsson < [email protected]>:
> 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. > > Hmm, not sure it would be easy cause it can lead to bypass the JVM for the JVM classes so can be quite tricky to get right (and slower at startup) > 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. > > They worked with Java core dev to make their code passing but I don't think the overall system (jvm+server+apps+libs) has been discussed. > -- > 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> >
