gpt4 book ai didi

java - 在 servlet 中使用池从池获取与数据库的连接时出错

转载 作者:行者123 更新时间:2023-12-01 15:20:39 25 4
gpt4 key购买 nike

嗯,我的处境相当尴尬。我有一个工作数据库管理器类,当我在桌面版本(Swing GUI)上运行它时它可以工作,但是,当我在 servlet 上运行相同的类时,我收到一个奇怪的错误,它无法获取联系。我正在使用数据库池进行优化。

因此错误如下所示:

Error in Database Connection: Error getting connection to database - java.sql.SQLException: No suitable driver found for jdbc:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2

包含相关方法的类如下所示:

    package Core;

import DataTypes.Parameters;
import Interfaces.OutputInterface;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.impl.GenericObjectPool;

/**
*
* @author arturas
*/
public class DatabaseConnection {

String specificError = "Error in Database Connection: ";
OutputInterface gui = null;
boolean allowOutput = true;
GenericObjectPool connectionPool;
ConnectionFactory connectionFactory;
PoolableConnectionFactory poolableConnectionFactory;
PoolingDriver driver;
Connection con = null;

public DatabaseConnection(Parameters params) {

// parameters and the output
this.gui = params.getGui();

// activate database pool
connectionPool = new GenericObjectPool(null);
connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass());
poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
driver = new PoolingDriver();
driver.registerPool("GenTreeDatabase", connectionPool);
}

public void openConn() {
if (allowOutput) gui.print("Getting connection to database");
try {
con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase");
if (con != null) {
if (allowOutput) gui.print("Connection to database was successful");
}
} catch (SQLException ex) {
gui.err(specificError + "Error getting connection to database - " + ex);
}
}

public void closeConn() {
try {
con.close();
if (allowOutput) {
gui.print("Connection to database closed successfully");
}
} catch (SQLException ex) {
gui.err(specificError + ex);
}
}

调用try in方法openConn时出现该错误。有人可以帮我解决这个问题吗?

最佳答案

您收到此错误是因为您的类路径中没有驱动程序。可能在您的桌面应用程序中有。您需要将驱动程序的 .jar 文件放入 servlet 容器的全局类路径或应用程序类路径中,它应该可以工作。

我更喜欢将驱动程序的 jar 添加到服务器全局类路径中,因为可能有多个应用程序将使用相同的 .jar 文件来加载驱动程序。

关于java - 在 servlet 中使用池从池获取与数据库的连接时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com