Awesome news Rémy, thanks for sharing!

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 mer. 24 avr. 2019 à 18:06, Rémy Maucherat <r...@apache.org> a écrit :

> On Thu, Mar 28, 2019 at 3:38 PM Rémy Maucherat <r...@apache.org> wrote:
>
> > On Wed, Mar 20, 2019 at 4:45 PM Romain Manni-Bucau <
> rmannibu...@gmail.com>
> > wrote:
> >
> >> Most of the time monitoring is done through a custom exporter in
> practise
> >> based on other impl - sigar, library integration like
> >> hibernate/eclipselinks ones, metrics, microprofile etc... -  and JMX is
> >> not
> >> then used - not judging it is good, bad, lack of knowledge or not, just
> >> saying what i see.
> >> Now I'm happy if JMX is made graal compatible. From what I saw, mainly
> the
> >> MBeanServer and Notifier (through the hierarchy it goes until that point
> >> in
> >> the JVM in standard mbeans) are blocking the compilation. I'm pretty
> sure
> >> these parts of Tomcat can be extracted in a particular class and then
> >> substrated which would make it graal compatible probably.
> >>
> >
> > Ok, so I had a (quick) look, and this doesn't seem to be something that
> is
> > adapted to Tomcat at this time.
> >
> > Steps:
> > - I built the embedded packaging here
> > https://github.com/apache/tomcat/tree/master/res/tomcat-maven
> > - It produces a standalone jar in target/tomcat-maven-1.0.jar
> > - Une the graal tool $GRAALVM/bin/native-image -jar
> > target/tomcat-maven-1.0.jar
> >
> > Produces:
> > Error: No instances are allowed in the image heap for a class that is
> > initialized or reinitialized at image runtime:
> > java.util.logging.SimpleFormatter
> > Detailed message:
> > Error: No instances are allowed in the image heap for a class that is
> > initialized or reinitialized at image runtime:
> > java.util.logging.SimpleFormatter
> > Trace:     object java.util.logging.ConsoleHandler
> >     object java.lang.Object[]
> >     object java.util.concurrent.CopyOnWriteArrayList
> >     object java.util.logging.LogManager$RootLogger
> >     object java.util.logging.Logger
> >     object org.apache.juli.logging.DirectJDKLog
> >     method
> > org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleState,
> > Object, boolean)
> > Call path from entry point to
> > org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleState,
> > Object, boolean):
> >     at
> >
> org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:390)
> >     at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:193)
> >     at org.apache.catalina.startup.Tomcat.start(Tomcat.java:455)
> >     at org.apache.catalina.startup.Tomcat.main(Tomcat.java:1444)
> >     at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:152)
> >     at
> >
> com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
> >
> > If you want to work on this, you can (git makes it easy) but it looks a
> > bit daunting at this point (java.util.logging is not supported either ?
> > this is not documented at
> > https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md
> ).
> >
>
> https://www.graalvm.org/docs/release-notes/#10-rc16 finally adds
> java.util.logging support, so I can resume investigations.
>
> ../graalvm-ce-1.0.0-rc16/bin/native-image -jar tomcat-maven-1.0.jar
> Build on Server(pid: 1452, port: 38003)*
> [tomcat-maven-1.0:1452]    classlist:   2,157.50 ms
> [tomcat-maven-1.0:1452]        (cap):     801.03 ms
> [tomcat-maven-1.0:1452]        setup:   1,746.56 ms
> [tomcat-maven-1.0:1452]   (typeflow):   4,968.17 ms
> [tomcat-maven-1.0:1452]    (objects):   3,425.07 ms
> [tomcat-maven-1.0:1452]   (features):     176.88 ms
> [tomcat-maven-1.0:1452]     analysis:   8,816.22 ms
> [tomcat-maven-1.0:1452]     universe:     289.24 ms
> Warning: Reflection method java.lang.Class.forName invoked at
> org.apache.catalina.startup.Tomcat.addWebapp(Tomcat.java:686)
> Warning: Reflection method java.lang.Class.forName invoked at
>
> org.apache.catalina.core.NamingContextListener.constructEnvEntry(NamingContextListener.java:797)
> Warning: Reflection method java.lang.Class.forName invoked at
>
> org.apache.tomcat.util.modeler.ManagedBean.createMBean(ManagedBean.java:303)
> Warning: Reflection method java.lang.Class.forName invoked at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:821)
> Warning: Reflection method java.lang.Class.forName invoked at
>
> org.apache.catalina.realm.RealmBase.createUsernameRetriever(RealmBase.java:1506)
> Warning: Reflection method java.lang.Class.forName invoked at
> org.apache.catalina.startup.Tomcat.createContext(Tomcat.java:964)
> Warning: Reflection method java.lang.Class.forName invoked at
> org.apache.tomcat.util.modeler.Registry.getModelerSource(Registry.java:723)
> Warning: Reflection method java.lang.Class.getMethod invoked at
> org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:450)
> Warning: Reflection method java.lang.Class.getMethod invoked at
> org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:443)
> Warning: Reflection method java.lang.Class.getMethod invoked at
>
> org.apache.catalina.deploy.NamingResourcesImpl.cleanUp(NamingResourcesImpl.java:1061)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
>
> org.apache.catalina.realm.RealmBase.createUsernameRetriever(RealmBase.java:1507)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
>
> org.apache.tomcat.util.modeler.ManagedBean.createMBean(ManagedBean.java:323)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
>
> org.apache.catalina.core.NamingContextListener.constructEnvEntry(NamingContextListener.java:800)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
>
> org.apache.catalina.core.NamingContextListener.constructEnvEntry(NamingContextListener.java:811)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
> org.apache.catalina.startup.Tomcat.createContext(Tomcat.java:964)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:821)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
> org.apache.catalina.startup.Tomcat.addWebapp(Tomcat.java:687)
> Warning: Reflection method java.lang.Class.getConstructor invoked at
> org.apache.tomcat.util.modeler.Registry.getModelerSource(Registry.java:724)
> Warning: Reflection method java.lang.ClassLoader.loadClass invoked at
>
> org.apache.tomcat.util.modeler.ManagedBean.createMBean(ManagedBean.java:311)
> Warning: Abort stand-alone image build due to reflection use without
> configuration.
> Warning: Use -H:+ReportExceptionStackTraces to print stacktrace of
> underlying exception
> Build on Server(pid: 1452, port: 38003)
> [tomcat-maven-1.0:1452]    classlist:     130.82 ms
> [tomcat-maven-1.0:1452]        (cap):     514.25 ms
> [tomcat-maven-1.0:1452]        setup:     789.01 ms
> [tomcat-maven-1.0:1452]   (typeflow):   1,503.13 ms
> [tomcat-maven-1.0:1452]    (objects):     550.15 ms
> [tomcat-maven-1.0:1452]   (features):     116.25 ms
> [tomcat-maven-1.0:1452]     analysis:   2,211.18 ms
> [tomcat-maven-1.0:1452]     universe:      86.11 ms
> [tomcat-maven-1.0:1452]      (parse):     319.54 ms
> [tomcat-maven-1.0:1452]     (inline):     886.40 ms
> [tomcat-maven-1.0:1452]    (compile):   2,731.85 ms
> [tomcat-maven-1.0:1452]      compile:   4,189.10 ms
> [tomcat-maven-1.0:1452]        image:     238.35 ms
> [tomcat-maven-1.0:1452]        write:      66.38 ms
> [tomcat-maven-1.0:1452]      [total]:   7,756.62 ms
> Warning: Image 'tomcat-maven-1.0' is a fallback image that requires a JDK
> for execution (use --no-fallback to suppress fallback image generation).
>
> This generates a 'tomcat-maven-1.0' executable, which runs and works but
> most likely does nothing really useful at this point. However, it's
> something and it's no longer unusable.
>
> Rémy
>

Reply via email to