当前位置: 首页 > 知识库问答 >
问题:

当我在shiro中使用Spring Boot时,Spring Boot执行器不发布jvm度量

祁凯泽
2023-03-14

我将Spring Boot与Shiro一起使用,但我启动应用程序并导航到/acture/metrics时会显示可用仪表名称的列表:

{
    names: [
        "http.server.requests",
        "jdbc.connections.max",
        "jdbc.connections.min"
    ]
}
//@Configuration
public class ShiroConfig {
      ...
}

我再次启动应用程序,我得到了所有:

{
names: [
"jvm.memory.max",
"process.files.max",
"jvm.gc.memory.promoted",
"tomcat.cache.hit",
"system.load.average.1m",
"tomcat.cache.access",
"jvm.memory.used",
"jvm.gc.max.data.size",
"jdbc.connections.max",
"jdbc.connections.min",
"jvm.gc.pause",
"jvm.memory.committed",
"system.cpu.count",
"logback.events",
"tomcat.global.sent",
"jvm.buffer.memory.used",
"tomcat.sessions.created",
"jvm.threads.daemon",
"system.cpu.usage",
"jvm.gc.memory.allocated",
"tomcat.global.request.max",
"tomcat.global.request",
"tomcat.sessions.expired",
"jvm.threads.live",
"jvm.threads.peak",
"tomcat.global.received",
"process.uptime",
"tomcat.sessions.rejected",
"process.cpu.usage",
"tomcat.threads.config.max",
"jvm.classes.loaded",
"jvm.classes.unloaded",
"tomcat.global.error",
"tomcat.sessions.active.current",
"tomcat.sessions.alive.max",
"jvm.gc.live.data.size",
"tomcat.servlet.request.max",
"tomcat.threads.current",
"tomcat.servlet.request",
"process.files.open",
"jvm.buffer.count",
"jvm.buffer.total.capacity",
"tomcat.sessions.active.max",
"tomcat.threads.busy",
"process.start.time",
"tomcat.servlet.error"
]
}

我想同时使用执行器和四郎。谢谢你的帮助。

共有1个答案

韶亮
2023-03-14

正如我所预料的,这个问题是由bean的加载顺序引起的。

我在项目中使用了四郎。

Shiro的验证方法使用MyBatis从数据库中读取数据。

public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    public void setApplicationContext(ApplicationContext applicationContext)
            throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Object getBean(String beanId) throws BeansException {
        return applicationContext.getBean(beanId);
    }
}

然后

StoreMapper userMapper = (UserMapper) SpringContextUtil.getBean("userMapper");
UserModel userModel = userMapper.findUserByName(name);

问题暂时可以解决。这只是权宜之计,但此刻我没有更好的办法。

 类似资料:
  • 我们什么时候应该使用Spring boot执行器。如果包括在内,它对应用程序内存和CPU使用有多大影响? 我目前正在使用Spring Boot 2. x。

  • 我正在运行一个Spring Boot2应用程序,并添加了致动器Spring Boot starter依赖项。我启用了所有webendpoint,然后调用: http://localhost:8080/acture/metrics 结果是: 但我缺少所有的JVM统计数据和其他内置度量。我错过了什么?我读到的每一件事都说,这些度量标准应该在任何时候都可用。 谢谢你的提示。

  • 我正在尝试将Apache shiro 1.7.0添加为安全管理器,您会发现我的配置类: shiro的pom.xml条目: 该项目编译成功,但我得到了上面的错误,而试图访问web应用程序,我感谢任何麻或建议。 启动Tomcat上下文时出错。异常:org.springframework.beans.factory.beancreationexception。消息:创建类路径资源[org/apache/

  • 我正在使用springboot,我正在使用执行器和prometheus暴露度量。我想暴露“信息”、“健康”、“度量”、“prometheus”、“关闭”等等。但是即使我指定应用程序属性,我看到的是甚至根“/执行器”也暴露了。 我想禁用根部执行器,只有我之前说过的5个成员。 有没有办法不只暴露/执行器endpoint?我也尝试过在应用程序属性中这样做: 这是外露致动器的列表:

  • 各位工程师,大家好! 我在试图创建一个胖罐子来执行cucumber测试时遇到了一个问题。最初,我按照指南从Baeldung设置测试。当在Maven测试阶段执行时,测试运行良好。当运行带有参数的mvn exec:java命令时,它也能正常工作。 然而,当我创建了一个胖罐子并试图执行测试时,我面临着错误 以下是我的项目的解释,它基本上与Baeldung的测试项目完全一样。 项目结构 直接从可执行jar

  • 我有一个springboot应用程序,当我在intellij内部运行时,它不与JSP一起工作,但当生成一个JAR时,它就不工作了。它给出了这个错误。 Whitelabel错误页面此应用程序没有 /error的显式映射,因此您将其视为后备方案。 IST 2018年5月21 00:23:11星期一出现意外错误(类型=未找到,状态=404)。没有可用的消息 JSP文件存在于src/main/resour