Created
October 8, 2012 14:34
-
-
Save onelittlenightmusic/3852842 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.testinterceptor; | |
import java.lang.reflect.Method; | |
import java.util.Map; | |
import org.apache.juli.logging.Log; | |
import org.apache.juli.logging.LogFactory; | |
import org.apache.tomcat.jdbc.pool.ConnectionPool; | |
import org.apache.tomcat.jdbc.pool.JdbcInterceptor; | |
import org.apache.tomcat.jdbc.pool.PoolProperties.InterceptorProperty; | |
import org.apache.tomcat.jdbc.pool.PooledConnection; | |
public class TestInterceptor extends JdbcInterceptor { | |
private static final Log log = LogFactory.getLog(TestInterceptor.class); | |
static long threshold = 0; | |
@Override | |
public void reset(ConnectionPool arg0, PooledConnection arg1) { | |
System.out.println("test interceptor caught reset()"); | |
log.trace("test interceptor caught reset()"); | |
} | |
public Object invoke(Object proxy, Method method, Object[] args) | |
throws Throwable { | |
String name = method.getName(); | |
System.out.println(name + ", threshold = "+threshold); | |
log.trace(name + ", threshold = "+threshold); | |
return super.invoke(proxy, method, args); | |
} | |
@Override | |
public void setProperties(Map<String, InterceptorProperty> properties) { | |
super.setProperties(properties); | |
final String threshold = "threshold"; | |
InterceptorProperty p1 = properties.get(threshold); | |
// InterceptorProperty p2 = properties.get(maxqueries); | |
if (p1!=null) { | |
setThreshold(Long.parseLong(p1.getValue())); | |
} | |
// if (p2!=null) { | |
// setMaxQueries(Integer.parseInt(p2.getValue())); | |
// } | |
} | |
public void setThreshold(long a) { | |
threshold = a; | |
} | |
public static void setThresholdStatic(long a) { | |
threshold = a; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
package org.testtomcat;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//import javax.sql.DataSource;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.testinterceptor.TestInterceptor;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// PoolProperties p = new PoolProperties();
// p.setJdbcInterceptors(String.format("org.testinterceptor.TestInterceptor(threshold=%d)",th));
// ds.setPoolProperties(p);
Connection con = ds.getConnection();
System.out.println(con.getCatalog());
Statement stmt = con.createStatement(); // (4)
ResultSet result = stmt.executeQuery("select * from testtable;");
while (result.next()) {
out.println(String.format("%s: %s", result.getInt(1),
result.getString(2)));
}
// PoolProperties p = new PoolProperties();
// p.setUrl("jdbc:mysql://localhost:3306/test");
// p.setDriverClassName("com.mysql.jdbc.Driver");
// p.setUsername("hiro");
// p.setPassword("0922");
// p.setJmxEnabled(true);
// p.setTestWhileIdle(false);
// p.setTestOnBorrow(true);
// p.setValidationQuery("SELECT 1");
// p.setTestOnReturn(false);
// p.setValidationInterval(30000);
// p.setTimeBetweenEvictionRunsMillis(30000);
// p.setMaxActive(100);
// p.setInitialSize(10);
// p.setMaxWait(10000);
// p.setRemoveAbandonedTimeout(60);
// p.setMinEvictableIdleTimeMillis(30000);
// p.setMinIdle(10);
// p.setLogAbandoned(true);
// p.setRemoveAbandoned(true);
// p.setJdbcInterceptors(
// "org.testtomcat.TestInterceptor");
// org.apache.tomcat.jdbc.pool.DataSource datasource = new org.apache.tomcat.jdbc.pool.DataSource();
// datasource.setPoolProperties(p);
// Connection con2 = ds.getConnection();
// System.out.println(con2.getCatalog());
// Statement stmt2 = con.createStatement(); // (4)
// ResultSet result2 = stmt2.executeQuery("select * from testtable;");
// while (result2.next()) {
// out.println(String.format("%s: %s", result2.getInt(1),
// result2.getString(2)));
// }
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}