在这个执行方法
中,间歇性的hibernate传递了一个空连接return session.doReturningWork(new ReturningWork<MyIterator<MyVO>>() {
@Override
MyIterator<MyVO> execute(Connection connection) throws SQLException {
PreparedStatement ps = null;
String preparedSql = "EXEC MyDB.dbo.MySP ?, ?";
ps = connection.prepareStatement(preparedSql); // <-- NPE !
该应用程序在tomcat中运行,并通过防火墙与打开到SQL Server的端口连接。
知道为什么会这样 - 这是我的连接池配置
<Resource name="xxx"
auth="Container"
type="javax.sql.DataSource"
username="username"
password="password"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
maxActive="200"
maxIdle="0"
maxWait="1000"
initialSize="1"
minIdle="0"
minEvictableIdleTimeMillis="300000"
url="jdbc:sqlserver://IP\INST\databasename"
SelectMethod="cursor"
validationQuery="select 1"
testOnBorrow="true"
logAbandoned="true"
removeAbandoned="true"
removeAbandonedTimeout="600"/>