Java 无法通过Servlet连接到SQL Server,但可以在本地连接到它
我试图通过JDBC连接到SQL Server——为此,我创建了一个名为Sahoodblib的类,该类负责连接到数据库并检索数据。我创建了另一个客户端,称为Sahooclient——它提供了一个显示数据的前端。到目前为止,该系统运行良好 现在,我正在尝试创建一个servlet,它实例化Sahoodblib,然后我一直得到ClassNotFoundException,我跟踪它,在Java 无法通过Servlet连接到SQL Server,但可以在本地连接到它,java,sql-server,servlets,jdbc,Java,Sql Server,Servlets,Jdbc,我试图通过JDBC连接到SQL Server——为此,我创建了一个名为Sahoodblib的类,该类负责连接到数据库并检索数据。我创建了另一个客户端,称为Sahooclient——它提供了一个显示数据的前端。到目前为止,该系统运行良好 现在,我正在尝试创建一个servlet,它实例化Sahoodblib,然后我一直得到ClassNotFoundException,我跟踪它,在Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”)
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");
}
编辑:
以下是我连接到DB的方式:
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
您可以在中找到有关类加载器将在何处查找类的更多信息。我们需要知道您如何连接到数据库?检查web inf/lib是否需要sqlserver驱动程序的jar在我第一次创建客户机时,jar文件已经包含在内,客户机工作正常。只有当我尝试通过servlet连接并在web浏览器上显示结果时,我才会出现此异常。当您从未使用它时,
uname
,pwd
有什么用?请检查您的web应用程序web-INF/lib
文件夹。它包含您的SQL jar吗?