问题:web每次请求都会动态连接数据库;dbname是个数据库名参数,
private Connection getConn() throws SQLException{
Connection conn=null;
try {
Class.forName("SQLite.JDBCDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if(dbName!=null&&dbName.length()>4){
conn=DriverManager.getConnection("jdbc:sqlite:/c://sqlite3//"+dbName+".db");
}
return conn;
}
原因:重重加载同一个文件;
错误表明sqlite_jni.dll已经被JVM的ClassLoader load了。通过查阅资料发现Web
Server的自动重启机制是产生这一问题的根源。当Resin重启包含sqlite_jni.dll的这个Web应用时,会因为Variant类的语句而自动执行jsqlite_jni.dll的加载。但重启Web应用并不是重启整个resin(即:上一次启动的JVM仍然存在),也就是说sqlite_jni.dll已