Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启用不带弹簧的测微计TomcatMetrics(如何获取tomcat manager)_Tomcat_Micrometer - Fatal编程技术网

启用不带弹簧的测微计TomcatMetrics(如何获取tomcat manager)

启用不带弹簧的测微计TomcatMetrics(如何获取tomcat manager),tomcat,micrometer,Tomcat,Micrometer,我想将Dimmomer TomcatMetrics类插入到一个没有Spring集成的现有tomcat应用程序中 从消息来源看来,只要打个电话 public static void monitor(MeterRegistry registry, @Nullable Manager manager, String... tags) 然而,我似乎不知道如何获得org.apache.catalina.Manager实例 如果没有管理器(null),它可以工作,但是缺少我想要的会话信息 那么,a如何

我想将Dimmomer TomcatMetrics类插入到一个没有Spring集成的现有tomcat应用程序中

从消息来源看来,只要打个电话

 public static void monitor(MeterRegistry registry, @Nullable Manager manager, String... tags) 
然而,我似乎不知道如何获得
org.apache.catalina.Manager
实例

如果没有管理器(null),它可以工作,但是缺少我想要的会话信息

那么,a如何以适当的方式掌握它(servletContextListener或其他)

private static Manager manager;

private static synchronized Manager getManager(ServletContext servletContext) {
    if (manager == null) {
        try {
            Field applicationContextField = servletContext.getClass().getDeclaredField("context");
            applicationContextField.setAccessible(true);
            ApplicationContext appContextObj = (ApplicationContext) applicationContextField.get(servletContext);
            Field standardContextField = appContextObj.getClass().getDeclaredField("context");
            standardContextField.setAccessible(true);
            StandardContext standardContextObj = (StandardContext) standardContextField.get(appContextObj);
            manager = standardContextObj.getManager();
        } catch (ReflectiveOperationException e) {
            throw new RuntimeException(e);
        }
    }
    return manager;
}