Java Web应用程序无法建立到数据库的连接

Java Web应用程序无法建立到数据库的连接,java,database,eclipse,tomcat,war,Java,Database,Eclipse,Tomcat,War,我的应用程序在Tomcat上运行时,在webapps文件夹中部署为.war时无法连接到我的数据库,但当我通过Eclipse直接运行它时,它可以连接。这两种情况下的代码完全相同。此外,webapps文件夹中原本可以连接到数据库的其他应用程序也无法再连接到数据库。jdbc代码是正确的,因为我已经用脱机应用程序或通过eclipse运行它时对其进行了测试,但当我使用localhost在Chrome上访问它时就不正确了。我的tomcat服务器怎么了 注意:JDBC驱动程序是MS Access驱动程序 这两

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

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

这两种情况下的代码完全相同

不,不是;如果是完全相同的,你将正确连接

但当我通过Eclipse直接运行它时,它可以连接

这是否意味着您有一个主方法来驱动正确连接的代码?你做这件事的方式通常不同于网络应用——你知道,对吧

如果你可以发布一个异常或日志消息,这将非常有帮助

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

  • 在一种配置下运行时,JDBC驱动程序JAR不可用;在这种情况下,您将看到一个
    ClassNotFoundException
  • 您尚未在Tomcat中正确配置
  • 您没有将JDBC驱动程序JAR放在Tomcat/lib目录中
  • 可能还有其他的可能性

    更新:

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

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

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

    这两种情况下的代码完全相同

    不,不是;如果是完全相同的,你将正确连接

    但当我通过Eclipse直接运行它时,它可以连接

    这是否意味着您有一个主方法来驱动正确连接的代码?你做这件事的方式通常不同于网络应用——你知道,对吧

    如果你可以发布一个异常或日志消息,这将非常有帮助

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

  • 在一种配置下运行时,JDBC驱动程序JAR不可用;在这种情况下,您将看到一个
    ClassNotFoundException
  • 您尚未在Tomcat中正确配置
  • 您没有将JDBC驱动程序JAR放在Tomcat/lib目录中
  • 可能还有其他的可能性

    更新:

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

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


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

    首先,您需要验证数据库文件的路径。事实上,我相信它必须是tomcat正确工作的绝对路径。最简单的方法是将数据库文件放在C:\data或类似文件中,然后在代码中硬编码路径。当然,该文件将位于war之外,因此不可移植(即,可部署到远程服务器)


    其次,您确实需要确保JDBC驱动程序可用。如果在代码中使用Class.forName加载驱动程序,则只需确保包含驱动程序的jar位于tomcat类路径中(该路径将包括webapp的lib目录)。如果使用-Djdbc.drivers JVM标志方法,则需要将其添加到tomcat启动脚本中。

    首先,需要验证数据库文件的路径。事实上,我相信它必须是tomcat正确工作的绝对路径。最简单的方法是将数据库文件放在C:\data或类似文件中,然后在代码中硬编码路径。当然,该文件将位于war之外,因此不可移植(即,可部署到远程服务器)


    其次,您确实需要确保JDBC驱动程序可用。如果在代码中使用Class.forName加载驱动程序,则只需确保包含驱动程序的jar位于tomcat类路径中(该路径将包括webapp的lib目录)。如果使用-Djdbc.drivers JVM标志方法,则需要将其添加到tomcat启动脚本中。

    请发布相关代码。如果您说有问题,那么代码或服务器配置显然有问题。如果您向我们展示相关代码,我们将为您提供最大帮助。谢谢。并不是每个人都看过你之前的问题……你需要用你所使用的JDBC驱动程序的详细信息来编辑这个问题