我有一个包含以下代码的JSP文件
<sql:update var="result" dataSource="${datasource}">
INSERT INTO movie (name,rating) values (?,?)
<sql:param value="${mtgReq.params['name']}"/>
<sql:param value="${mtgReq.params['rating']}"/>
</sql:update>
<c:set target="${outputMap}" property="postResult" value="${result}"/>
我想记录与参数值一起执行的SQL查询。就像在Hibernate中一样。
唯一的问题是,我没有在后台使用任何框架,而只是纯JDBC。
我发现了这个logging framework example,它在DataSource
对象上添加了代理层并记录了查询。
唯一的问题是,他们的配置可以与DataSource
的{{1}}文件中全局声明的server.xml
一起使用,但是我希望它可以在应用程序级别进行配置,以便可以为每个Web应用程序进行配置,因此我遵循了他们的示例,但在应用程序的context.xml文件中写了相同的内容,这就是它的样子
Tomcat
上面的配置对我不起作用,并给我这个错误
<?xml version="1.0" encoding="UTF-8"?>
<Context cookies="false" path="/testweb" privileged="true" reloadable="true">
<Resource auth="Container"
closeMethod="close"
connectionTimeout="300000"
dataSource.implicitCachingEnabled="true"
driverClassName="org.hsqldb.jdbc.JDBCDriver"
factory="com.zaxxer.hikari.HikariJNDIFactory"
idleTimeout="120000"
jdbcUrl="jdbc:hsqldb:file:C:\Softwares\apache-tomcat-9.0.19\databases\testWeb\testdb;shutdown=true"
maxLifetime="1800000"
maximumPoolSize="2"
minimumIdle="1"
name="jdbc/testwebT"
username="sa"
password=""
poolName="testSamplePool"
type="javax.sql.DataSource"/>
<Resource name="jdbc/myProxy"
auth="Container"
type="net.ttddyy.dsproxy.support.ProxyDataSource"
factory="net.ttddyy.dsproxy.support.jndi.ProxyDataSourceObjectFactory"
description="ds"
listeners="count,sysout"
proxyName="DS-PROXY"
format="json"
dataSource="java:jdbc/testwebT"/>
<ResourceLink name="jdbc/testweb" global="jdbc/myProxy" type="javax.sql.DataSource"/>
<JarScanner scanManifest="false"/>
<WatchedResource>/WEB-INF/lib/</WatchedResource>
</Context>
有人可以告诉我我在哪里犯错吗? 预先感谢。