gpt4 book ai didi

java - 无法通过 Servlet 连接到 SQL Server,但可以在本地连接到它

转载 作者:行者123 更新时间:2023-12-02 08:20:41 24 4
gpt4 key购买 nike

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

现在,我正在尝试创建一个 servlet,它实例化 Sahoodblib,然后我不断收到 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();
}

最佳答案

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

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

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

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

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

关于java - 无法通过 Servlet 连接到 SQL Server,但可以在本地连接到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521706/

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