Мониторинг пула соединений JDBC GlassFish - PullRequest
3 голосов
/ 07 июня 2010

Я пытаюсь найти параметр, с помощью которого информация о мониторинге пула соединений будет поступать в server.log при возникновении ошибки типа «ошибка выделения соединения» или «соединение закрыто».

Я нашел записей в блоге , в которых говорится об этом, но они упоминают об этом с точки зрения GUI. Однако я хочу установить параметр в самом пуле соединений, чтобы в журналах периодически отображалась информация о мониторинге пула соединений.

Кто-нибудь знает о такой настройке?

На сервере приложений Sun 8.X это было perf-monitor

1 Ответ

2 голосов
/ 07 июня 2010

Я не знаю, может ли это помочь вам .... но вы можете запросить информацию о мониторинге пула соединений через jmx.Этот код кода выведет на экран максимальный размер пула и количество использованных соединений для всех пулов соединений на сервере приложений (есть множество других вещей, которые вы можете извлечь из MBeans):

    MBeanServerConnection conn = getMbeanServerConnection();

    //search the jmx register for the specified beans
    Set<ObjectInstance> connectorPoolSet =  conn.queryMBeans(new ObjectName("*:type=jdbc-connection-pool,*"), null);
    Map<String , ObjectName> configMap = new HashMap<String, ObjectName>();
    Map<String , ObjectName> monitorMap = new HashMap<String, ObjectName>();

    //get a map of each config & monitor object found for the search
    for(ObjectInstance oi : connectorPoolSet) {
        String name = oi.getObjectName().getKeyProperty("name");

        //if the category of the mbean is config - put it in the config map - else if it is monitor
        //place it in the monitor map.
        String category = oi.getObjectName().getKeyProperty("category");
        if("config".equalsIgnoreCase(category)) {
            configMap.put(name, oi.getObjectName());
        } else if("monitor".equalsIgnoreCase(category)){
            monitorMap.put(name, oi.getObjectName());
        }
    }

    //iterate the pairs of config & monitor mbeans found 
    for(String name : configMap.keySet()) {

        ObjectName configObjectName  = configMap.get(name);
        ObjectName monitorObjectName = monitorMap.get(name);
        if(monitorObjectName == null) {
            //no monitor found - throw an exception or something
        }

        int maxPoolSizeVal = getAttributeValue(conn, configObjectName, "max-pool-size");
        int connectionsInUse = getAttributeValue(conn, monitorObjectName, "numconnused-current");

        System.out.println(name + " -> max-pool-size : " + maxPoolSizeVal);
        System.out.println(name + " -> connections in use : " + connectionsInUse);


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...