簡體   English   中英

Web 應用程序無法建立與數據庫的連接

[英]Web application cannot establish connection to database

我的應用程序在 Tomcat 上運行時,在 webapps 文件夾中部署為 a.war 時無法連接到我的數據庫,但是當我直接通過 Eclipse 運行它時,它可以連接。 兩種情況下的代碼完全相同。 此外,webapps 文件夾中的其他應用程序原本可以連接到數據庫,現在也無法連接。 jdbc 代碼是正確的,因為我已經使用離線應用程序或通過 eclipse 運行它時對其進行了測試,但當我使用 localhost 在 Chrome 上訪問它時則不然。 我的 tomcat 服務器發生了什么事?

注意:JDBC 驅動程序是 MS Access 驅動程序之一。

兩種情況下的代碼完全相同。

不,這不對; 如果它完全相同,您將正確連接。

但是當我直接通過 Eclipse 運行它時它可以連接

這是否意味着您有一個主要方法來驅動正確連接的代碼? 您執行此操作的方式通常不同於 web 應用程序 - 您知道,對吧?

如果您可以發布異常或日志消息,那將有很大幫助。

我猜它可能是以下任何一種; 猜測是必要的,因為您沒有提供足夠的信息來獲得可靠的答案:

  1. 在一種配置下運行時,JDBC 驅動程序 JAR 不可用; 在這種情況下,您會看到ClassNotFoundException
  2. 您尚未在 Tomcat 中正確配置JNDI 數據源
  3. 您沒有將 JDBC 驅動程序 JAR 放在 Tomcat /lib 目錄中。

可能是其他可能性。

更新:

由於您使用的是 Access,並且沒有提供其他信息,我猜您正在使用相對文件路徑來訪問 Access .mdb文件。 您在 Eclipse 中成功運行的命令行應用程序可以正常工作,因為您提供了相對於項目根目錄正確的相對文件路徑。 當您部署到 Tomcat 時,該相對路徑不再正確,因此您的應用程序無法再找到數據庫。

聽起來您沒有打印堆棧跟蹤以查找錯誤,因此您丟失了可能幫助您解決這個問題的信息。

Microsoft Access 不是多用戶數據庫。 在 Tomcat 上運行的基於 web 的應用程序肯定是多線程的。 您不應將 Access 用於 web 應用程序。 我會考慮切換到另一個數據庫。

首先,您需要驗證數據庫文件的路徑。 事實上,我相信它必須是 tomcat 正常工作的絕對路徑。 最簡單的做法是將數據庫文件放在 C:\data 或類似文件中,然后在代碼中硬編碼路徑。 當然,該文件將在您的戰爭之外,因此不可移植(即,可部署到遠程服務器)。

其次,您確實需要確保 JDBC 驅動程序可用。 如果您在代碼中使用 Class.forName 來加載驅動程序,您只需確保包含驅動程序的 jar 位於 tomcat 類路徑(其中將包括您的 webapp)目錄中。 如果您使用 -Djdbc.drivers JVM 標志方法,則需要將其添加到 tomcat 啟動腳本中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM