一、获取jamon
jamon官方地址:http://jamonapi.sourceforge.net/
jamon下载地址:http://sourceforge.net/project/showfiles.php?group_id=96550
二、部署jamon到项目中
解压下载的压缩包,压缩包里有一个例子jamon.war,在项目里新建一个文件夹jamon,该文件夹跟WEB-INF同级,把例子里除了WEB-INF,META-INF的所有内容copy到文件夹jamon里,添加例子中的三个包jakarta-oro-2.0.8.jar,hsqldb.jar,fdsapi-1.2.jar,压缩包中的jamon-2.7.jar到项目中。
三、把jamon集成到spring中
不使用jamon时,配置文件内容为:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.driverClassName}">
</property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
使用jamon时,配置文件改为:
<bean id="dataSource" class="com.abc.dao.jdbc.MonitorDataSource" destroy-method="close">
<property name="realDataSource" ref="writeDataSource"/>
</bean>
<bean id="writeDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.driverClassName}">
</property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
需要添加一个MonitorDataSource类,该类实现了javax.sql.DataSource接口
public class MonitorDataSource implements DataSource {
private DataSource realDataSource;
public Connection getConnection() throws SQLException {
return MonProxyFactory.monitor(realDataSource.getConnection());
}
public Connection getConnection(String arg0, String arg1)
throws SQLException {
return MonProxyFactory
.monitor(realDataSource.getConnection(arg0, arg1));
}
public PrintWriter getLogWriter() throws SQLException {
return null;
}
public int getLoginTimeout() throws SQLException {
return 0;
}
public void setLogWriter(PrintWriter arg0) throws SQLException {
}
public void setLoginTimeout(int arg0) throws SQLException {
}
public DataSource getRealDataSource() {
return realDataSource;
}
public void setRealDataSource(DataSource realDataSource) {
this.realDataSource = realDataSource;
}
}
四、查看执行的sql语句
打开 http://你的项目路径/jamon/sql.jsp 应该就可以看到该项目执行过的sql语句了
五、问题
一般的sql执行都没有问题,我碰到了一个特殊的情况,出现问题:Class com.jamonapi.proxy.MonProxy can not access a member of class oracle.jdbc.driver.ScrollRsetStatement with modifiers "public abstract"
不知道怎么去解决,或许是jamon的bug,还需要改进吧,郁闷,我的项目是没法使用jamon了。