Когда я использую Spring Boot с shiro, Spring Boot Actuator не публикует метрику jvm - PullRequest
0 голосов
/ 23 октября 2018

Я использую Spring Boot с Shiro, но я запускаю приложение и перехожу к / привод / метрики отображает список доступных имен счетчиков:

{
    names: [
        "http.server.requests",
        "jdbc.connections.max",
        "jdbc.connections.min"
    ]
}

Всего 3 элемента !!!

Затем я защищаю конфигурацию shiro:

//@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"
]
}

Я хочу использовать и Actuator, и Shiro.Спасибо за любую помощь.

1 Ответ

0 голосов
/ 23 октября 2018

Как я и ожидал, эта проблема вызвана порядком загрузки bean-компонентов.

Я использовал Shiro в проекте.

Метод проверки Широ использовал MyBatis для чтения данных из базы данных.

Я использовал @Autowired для файла Mapper MyBatis, из-за которого SpringBoot не собирал компоненты, связанные с метриками Actuator (я не знаю, в чем причина).

Итак, я отключил автоматическую сборку файла Mapper при ручной сборке .

Код выглядит следующим образом:

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);

Проблема может быть решена в настоящее время.Это всего лишь временная мера, но на данный момент у меня нет лучшего способа.

...