打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JSP学习笔记(七十九):spring中使用jamon跟踪执行的sql语句 - 魔豆的BL...

一、获取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了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring DataSource
c3p0数据源配置
BoneCP数据库连接池
《深入了解mybatis原理》 Mybatis数据源与连接池
Jdbc 实现分页
Spring源代码分析(三):Spring JDBC
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服