【问题标题】:Cannot connect to SQL Server via Servlet however can connect to it locally无法通过 Servlet 连接到 SQL Server,但是可以在本地连接到它
【发布时间】:2011-07-28 03:51:48
【问题描述】:

我正在尝试通过 JDBC 连接到 SQL Server - 为此我创建了一个名为 Sahoodblib 的类,它负责连接到数据库和检索数据的工作。我创建了另一个客户端,称为 Sahooclient - 它提供了一个用于显示数据的前端。到目前为止,该系统运行良好。

现在,我正在尝试创建一个实例化 Sahoodblib 的 servlet,然后我不断收到 ClassNotFoundException,我追溯它并在 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") 处收到异常

现在,这让我感到困惑,因为当我在本地调用该方法时它工作得非常好,但是当我通过浏览器执行它时给我带来了问题。我已经为 SQL Server 启用了 TCP/IP 和所有其他连接。

这是我得到错误的地方:

   /* Initialize the servlet. */
@Override
public void init(ServletConfig config) throws ServletException {
    super.init(config);
    sdb = new Sahoodblib("ism6236","ism6236bo");
}

编辑:

这就是我连接数据库的方式:

    public Sahoodblib(String uname, String pwd) {
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String url = "jdbc:sqlserver://localhost;" + 
            "databaseName=Travel;user=ism6236;password=ism6236bo;";
        cn = DriverManager.getConnection(url);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Sahoodblib.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(Sahoodblib.class.getName()).log(Level.SEVERE, null, ex);
    }
    set_max_tid();
}

【问题讨论】:

  • 我们需要知道如何您是如何连接到您的数据库的?
  • 检查 web-inf/lib 是否需要 sqlserver 驱动的 jar >
  • 我第一次创建客户端时已经包含了jar文件,并且客户端工作正常。只有当我尝试通过 servlet 连接并在网络浏览器上显示结果时,才会出现此异常。
  • 从不使用uname,pwd有什么用?
  • 检查您的 Web 应用程序 WEB-INF/lib 文件夹。它是否包含您的 SQL jar?

标签: java sql-server servlets jdbc


【解决方案1】:

当您单独运行时,com.microsoft.sqlserver.jdbc.SQLServerDriver 类位于类路径中。当你作为 servlet 运行时不是这样。

您需要弄清楚这些类路径有何不同。运行客户端时,是否在 jar 文件中提供包含 SQL Server 类的类路径?

  • 如果这样做,您需要查看 Web 服务器并弄清楚如何为其提供相同的 jar 文件;通常你把它放在你的网络应用程序的 WEB-INF/lib 目录中。
  • 如果不这样做,它会包含在 JVM 的默认位置之一。客户端和 Web 服务器是否使用相同的 JVM?

我在这里假设您在 JAR 文件中拥有所有 SQL Server 内容。如果你在某个地方解压了它,你的类路径需要解压它的目录而不是 jar 文件本身。

您可以在http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html 中找到有关类加载器将在何处查找类的更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2016-12-26
    • 2018-07-26
    相关资源
    最近更新 更多