private Server findMeecrowave()

in geronimo-metrics-extensions/geronimo-metrics-tomcat/src/main/java/org/apache/geronimo/microprofile/metrics/extension/tomcat/TomcatRegistrar.java [132:146]


    private Server findMeecrowave() {
        try {
            final ClassLoader loader = Thread.currentThread().getContextClassLoader();
            final Class<?> meecrowaveClass = loader.loadClass("org.apache.meecrowave.Meecrowave");
            final Class<?> cdi = loader.loadClass("javax.enterprise.inject.spi.CDI");
            final Object current = cdi.getMethod("current").invoke(null);
            final Object meecrowaveInstance = cdi.getMethod("select", Class.class, Annotation[].class)
                                     .invoke(current, meecrowaveClass, new Annotation[0]);
            final Object meecrowave = meecrowaveInstance.getClass().getMethod("get").invoke(meecrowaveInstance);
            final Object tomcat = meecrowave.getClass().getMethod("getTomcat").invoke(meecrowave);
            return Server.class.cast(tomcat.getClass().getMethod("getServer").invoke(tomcat));
        } catch (final Exception | Error e) {
            return null;
        }
    }