Доступ к данным мониторинга Java EE внутри сервлета

#java #servlets #glassfish #monitoring

#java #сервлеты #glassfish #мониторинг

Вопрос:

Я пытаюсь получить доступ к данным мониторинга, которые собирает glassfish v3 после того, как я включил службу мониторинга и службу mbean.

Я хотел бы показать такие данные, как ProcessingTime или RequestCount в сервлете «QuickInfo» на том же компьютере, чтобы показать пользователям / администраторам, занята ли машина.

Я думаю, что вход в данные, вероятно, является InitalContext JNDI… но я не смог найти пример.

Спасибо за вашу помощь.

Ответ №1:

Для устранения неполадок и поиска точных имен интересующих вас данных используйте эту команду:

 asadmin get -m pattern-here
asadmin get -m "server.web.request.*"   # for example
  

Вам нужна одна зависимость:

    <dependency>
        <groupId>org.glassfish.flashlight</groupId>
        <artifactId>flashlight-framework</artifactId>
        <version>3.2-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
  

Для версии используйте любую версию GlassFish, которую вы используете.

Вывод немного запутанный, но это даст вам представление.

 import org.glassfish.flashlight.MonitoringRuntimeDataRegistry;
import org.glassfish.flashlight.datatree.TreeNode;
import javax.annotation.Resource;

@Resource
private MonitoringRuntimeDataRegistry datareg;

private String showOneNode() {
    StringBuilder sb = new StringBuilder("<ul>n");
    TreeNode mainNode = datareg.get("server");
    List<TreeNode> ltn = mainNode.getNodes("server.web.request.*");

    for(TreeNode tn : ltn) {
        String val = tn.getValue().toString();
        sb.append("<li>").append(tn.getCompletePathName()   val);
    }

    sb.append("</ul>");
    return sb.toString();
}
  

============

Ссылки:

Комментарии:

1. Спасибо за ваш ответ. У меня получилось. Мне пришлось добавить flashlight-framework.jar к моему проекту eclipse. Теперь я получаю много информации о server.web. * но как я могу указать конкретный компонент или сервлет?

2. взгляните на вывод этой команды, и вы увидите, как это сделать: asadmin get -m «*»