2010-05-22 123 views
1

來自我的第一個問題是堆棧溢出。訪問Web服務中的sqlite數據庫文件的最佳方式

我創建了一個包含使用NetBeans的Web服務的Java Web應用程序(我希望Web應用程序是正確的選擇)。我使用Web應用程序,沒有額外的框架。此Web服務使用sqlite JDBC驅動程序來訪問sqlite數據庫文件。

我的問題是,當我嘗試形成JDBC連接字符串時,文件路徑最終不正確。另外,部署和運行JUnit測試時,工作目錄不同。我讀過關於將文件作爲資源的地方,但這方面的例子無處可見。

在任何情況下,什麼是最好的方式來打開sqlite數據庫,無論是當部署的Web服務和當我測試它「本地」?

我對網絡服務瞭解不多,我只是需要它的工作,所以請幫助我解決技術問題。

更新 爲了把這個上下文中的痘痘位,有些「的println」代碼給出了這樣的:

從一個簡單的JUnit測試打印工作目錄給出

C:\MinaFiler\Work\SOA\BusTimetableWS 

調用類似的網站服務方法返回

C:\Program Files\sges-v3\glassfish\domains\domain1 

連接字符串由前置「jd BC:sqlite的:」到這​​在目前是絕對路徑:

C:\MinaFiler\Work\SOA\BusTimetableWS\src\java\miun\bustimetable\database\sqlit\BusTimetableWS.db 

然而,這種失敗,因爲我的測試中拋出異常,指出數據庫中的表不存在,儘管他們真的這麼做了,我可以看到他們的sqlite3。可執行程序 。

+0

什麼是真正的db路徑? – Amirshk 2010-05-22 19:08:19

+0

真正的文件路徑是上面介紹的那些文件的第三個路徑。 – 2010-05-23 15:29:33

回答

0

一種方法是使用配置文件,您可以從中讀取並獲取連接字符串。

我確定你正在使用的框架有一些標準的保存配置的方式。

另一種選擇是將db放置在主執行文件的已知相對路徑中。然後在執行時獲取當前目錄,並從該路徑中查找數據庫。

+0

我用一些細節更新了我的問題。說到配置,我正在將數據庫文件路徑作爲VM選項屬性傳遞,-D – 2010-05-22 17:42:13

0

在任何情況下,什麼是最好的方式來打開sqlite數據庫,無論是當部署Web服務,當我測試它「本地」?

Web服務應使用DataSource從應用程序服務器級配置的連接池中檢索連接。在你的單元測試中,使用你想要的任何東西(一個獨立的連接池,一個直接的JDBC連接)。

但是在這兩種情況下,爲什麼不在你的jdbc url中使用數據庫文件的絕對路徑?從How to Specify Database Files

jdbc:sqlite:C:/work/mydatabase.db 

,如果你這樣做的工作目錄也沒有什麼關係。

+0

好的,像往常一樣,問題比預期的更容易。在虛擬機選項中有錯誤的屬性名稱。但是,您仍然可以解釋或指導我獲取有關此DataSource和連接池的信息。 – 2010-05-23 15:36:24

相關問題