2010-06-06 3 views
3

J'essaie de trouver un paramètre par lequel les informations de surveillance du pool de connexions viendraient dans le fichier server.log lorsqu'une erreur du type "erreur d'allocation d'une connexion" ou "connexion fermée" se produit.Surveillance de pool de connexion JDBC GlassFish

J'ai trouvé quelques blog entries qui parlent de cela mais ils le mentionnent de GUI prespective. Cependant, je veux un paramètre sur le pool de connexion lui-même afin que les informations de surveillance du pool de connexions soient affichées de manière pérodique dans les journaux.

Quelqu'un connaît-il un tel paramètre?

Sur Sun application serveur 8.X Il fut un perf-monitor

Répondre

2

Je ne sais pas si cela peut vous aider .... mais vous pouvez interroger les informations de surveillance pool de connexion via JMX. Ce code de code imprimera la taille max-pool et le nombre de connexions utilisées pour tous les pools de connexion dans le serveur d'applications (il y a beaucoup plus de choses que vous pouvez extraire des 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); 


    } 
Questions connexes