Я пытаюсь превратить свой код jdbc для использования функций пула соединений на Tomcat. Моя система представляет собой приложение JSP/сервлет, который подключается к SQL Server 2008. Таким образом, позволяет получить к коду ...Пул соединений Jdbc с Sql Server 2008 не работает
Мой класс Connection выглядит следующим образом:
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
//... some more imports
public class DbPooledConnectionToMSSQL {
public String dbsource ;
private Connection dbCon;
private DataSource datasource = new DataSource();
private PoolProperties p = new PoolProperties();
public DbPooledConnectionToMSSQL() {
super();
dbsource = "jdbc:sqlserver://xxx.xxx.x.x:1433;database=xxx";
String user = "user";
String password = "pass";
p.setUrl(dbsource);
p.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//p.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource");
p.setUsername(user);
p.setPassword(password);
p.setMaxActive(100);
p.setInitialSize(10);
p.setMaxWait(10000);
p.setRemoveAbandonedTimeout(60);
p.setMinEvictableIdleTimeMillis(30000);
p.setMinIdle(10);
datasource.setPoolProperties(p);
}
public boolean connect() throws ClassNotFoundException, SQLException {
try {
if (dbCon == null) {
System.err.println("Creating Pooled Connection....");
dbCon = datasource.getConnection(); //<-- here is the exception
System.err.println("!!! Pooled Connection creation OK");
} else {
System.err.println("!!! Connection EXIST not creation");
}
} catch (SQLException e) {
return false;
} catch (Exception e) {
return false;
}
return true;
}
//more code below
}
Теперь, в моем классе второе место Я инициализирую этот класс и пытаюсь подключиться к моей базе данных, но получаю знаменитое ClassNotFoundException по команде dbCon = datasource.getConnection();
Я уверен, что драйвер подключения на месте, поскольку он уже используется в моем обычном коде jdbc (а не в соединении Объединение) и работает отлично.
Я также попытался использовать com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource
как класс водителя, но я также получаю такое же исключение:
java.sql.SQLException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127)
at admin.db.DbPooledConnectionToMSSQL.connect(DbPooledConnectionToMSSQL.java:97)
......
Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
Что мне делать здесь не так? Есть ли другой драйвер jdbc, который мог бы выполнить эту работу?
У вас на самом деле есть драйвер JDBC на пути к классу? –
Yeap, мой старый код также использует этот драйвер и отлично работает – MaVRoSCy