You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/04/17 14:41:11 UTC

svn commit: r1327072 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JMXBasicDataSource.java

Author: rmannibucau
Date: Tue Apr 17 12:41:10 2012
New Revision: 1327072

URL: http://svn.apache.org/viewvc?rev=1327072&view=rev
Log:
adding executeValidationQuery to the datasource MBean (thanks jlmonteiro for the idea)

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JMXBasicDataSource.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JMXBasicDataSource.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JMXBasicDataSource.java?rev=1327072&r1=1327071&r2=1327072&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JMXBasicDataSource.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/JMXBasicDataSource.java Tue Apr 17 12:41:10 2012
@@ -1,8 +1,12 @@
 package org.apache.openejb.resource.jdbc;
 
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
 import javax.management.Description;
 import javax.management.MBeanServer;
 import javax.management.ManagedAttribute;
+import javax.management.ManagedOperation;
 import javax.management.ObjectName;
 import org.apache.openejb.monitoring.DynamicMBeanWrapper;
 import org.apache.openejb.monitoring.LocalMBeanServer;
@@ -181,4 +185,46 @@ public class JMXBasicDataSource {
     public int getDefaultTransactionIsolation() {
         return ds.getDefaultTransactionIsolation();
     }
+
+    @ManagedOperation
+    @Description("Execute the validation query.")
+    public String executeValidationQuery() {
+        final String query = ds.getValidationQuery();
+        if (query == null || query.trim().isEmpty()) {
+            return "no validation query defined";
+        }
+
+        final Connection conn;
+        try {
+            conn = ds.getConnection();
+        } catch (SQLException e) {
+            return e.getMessage();
+        }
+
+        Statement statement = null;
+        try {
+            statement = conn.createStatement();
+            if (statement.execute(query)) {
+                return "OK";
+            }
+            return "KO";
+        } catch (SQLException e) {
+            return e.getMessage();
+        } finally {
+            if (statement != null) {
+                try {
+                    statement.close();
+                } catch (SQLException e) {
+                    // no-op
+                }
+            }
+            if (conn != null) {
+                try {
+                    conn.close();
+                } catch (SQLException e) {
+                    // no-op
+                }
+            }
+        }
+    }
 }