java - Web 应用程序无法建立与数据库的连接

标签 java database eclipse tomcat war

我的应用程序在 Tomcat 上运行时,在 webapps 文件夹中作为 .war 部署时无法连接到我的数据库,但当我直接通过 Eclipse 运行它时它可以连接。两种情况下的代码完全相同。另外,webapps文件夹下的其他app,原本可以连接数据库的,现在也连接不上了。 jdbc 代码是正确的,因为我已经使用离线应用程序或通过 eclipse 运行它时对其进行了测试,但当我使用 localhost 在 Chrome 上访问它时却不正确。我的 tomcat 服务器发生了什么事?

注意:JDBC 驱动程序是 MS Access 驱动程序。

最佳答案

The code is exactly the same in both cases.

不,不是;如果它完全相同,您就可以正确连接。

but it can connect when I am running it through Eclipse directly

这是否意味着您有一个 main 方法来驱动正确连接的代码?您执行此操作的方式通常不同于 Web 应用程序 - 您知道这一点,对吧?

如果您可以发布异常或日志消息,那将大有帮助。

我猜它可能是以下任何一种;猜测是必要的,因为您没有提供足够的信息来获得可靠的答案:

  1. 当您在一种配置下运行时,JDBC 驱动程序 JAR 不可用;在这种情况下,您会看到一个 ClassNotFoundException
  2. 您还没有配置 JNDI data source在 Tomcat 中正常运行。
  3. 您没有将 JDBC 驱动程序 JAR 放在 Tomcat/lib 目录中。

可能是其他的可能性。

更新:

由于您使用的是 Access,并且没有提供其他信息,我猜您使用的是相对文件路径来访问 Access .mdb 文件。您的命令行应用程序在 Eclipse 中成功运行是因为您提供了相对于项目根目录的正确相对文件路径。当您部署到 Tomcat 时,该相对路径不再正确,因此您的应用程序无法再找到数据库。

听起来您没有为错误打印堆栈跟踪,因此您丢失了可能有助于解决问题的信息。

Microsoft Access 不是多用户数据库。在 Tomcat 上运行的基于 Web 的应用程序当然是多线程的。您不应将 Access 用于 Web 应用程序。我会考虑切换到另一个数据库。

关于java - Web 应用程序无法建立与数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003017/

相关文章:

android - Android 代码中的 ECLIPSE 注释 - 这是什么?

java - @Where 与 @SecondaryTable 不适用于 Hibernate

Java Android : result in the calculator displays integers(need float/double)

mysql - 我应该尽可能避免复合主键吗?

eclipse - Eclipse 是否有线宽标记?

java - maven jar插件无法解析

java - 创建带有天数的数字模式

java - 了解weblogic server的数据源日志

php - 使用 codeigniter 在数据库中存储注销时间

database - 使用API​​获取azure数据库的组件层详细信息