2016-12-05 31 views
0

由第一次使用在Tomcat中8.0的server.xml(在Windows 7)規定的GlobalNamingResource創建我目前使用嵌入式Derby數據庫。在tomcat中作爲GlobalNamingResource創建的嵌入式Derby數據庫的存儲位置是什麼?

目前我可以在Java代碼中使用它,但如果我想與像Eclipse的數據源資源管理器等工具來訪問它,我無法找到它在我的文件系統(Windows 7)的任何地方。

我server.xml中的有關部分如下:

<Resource auth="Container" 
    driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
    maxActive="100" maxIdle="30" maxWait="10000" 
    name="jdbc/myDB" password="" username="" 
    type="javax.sql.DataSource" 
    url="jdbc:derby:Databases/myDerbyDB;create=true" /> 

context.xml中包含此:

<ResourceLink name="jdbc/myDBLink" global="jdbc/myDB" 
    auth="Container" type="javax.sql.DataSource" /> 

Java代碼的用途(有點縮短):

DataSource ds = (DataSource) env.lookup("java:/comp/env/jdbc/myDBLink"); 

這個偉大的工程翻過重新啓動,我的Tomcat服務器的重新啓動。可以使用Hibernate,EclipseLink,純JDBC訪問數據庫,並且數據在其中保存良好。文檔狀態,這應該存儲在CATALINA_HOME下面的某處,但在那裏我找不到任何看起來像Derby DB的東西。另外,當我搜索我的所有磁盤時,找不到名爲myDerbyDB的文件夾或包含相關內容的文件夾Databases

所以我的問題是:當德比的存儲我的數據?

+1

您使用的搜索你的硬盤是什麼工具?鑑於JDBC連接URL,您絕對應該能夠找到該文件夾​​。也許你在不同的服務器上運行Tomcat,並且你正在搜索錯誤的服務器?嘗試搜索名爲「seg0」的文件夾或名爲「db.lck」的文件。當你說你可以通過「純JDBC」訪問數據庫時,你的意思是你正在訪問**相同的**數據庫嗎?如果是這樣,那麼您在該「純JDBC」程序中使用了哪些JDBC連接URL,並且可以確定它正在存儲數據庫的位置? –

+1

您的數據庫將位於'$ WORKING_DIR \ Databases \ myDerbyDB'中。如果您將Tomcat作爲Windows服務運行,那麼'$ WORKING_DIR'將取決於Windows服務機制如何設置它。如果服務以某種非常規登錄的用戶身份運行,則可能無法找到它。 –

+0

Derby在嵌入式模式下作爲tomcat中的全局資源運行(意味着在系統方面不是全局的)。 Tomcat本身是由Eclipse啓動的。我使用Windows資源管理器搜索名爲「數據庫」的文件夾(例如myDerbyDB)。有趣的是,當我搜索「seg0」時,我得到一個結果,它指向了eclipse的安裝路徑(在我的例子中:D:\ jee-neon \ eclipse \ Databases \ \ seg0)。這在使用數據庫名稱搜索時沒有顯示出來。感謝提示。 – themole

回答

0

所以從布賴恩和史蒂夫的意見,我找到了答案,以我自己的問題。

對於Tomcat託管的Derby嵌入式數據庫,在Windows下運行在Eclipse中的tomcat,derby.system.home似乎指的是Eclipse 安裝文件夾,而不是它的工作區。

因此,當安裝在您的Eclipse IDE下面

D:\eclipse 

的JDBC URL

jdbc:derby:Databases/myDerbyDB 

將指位於Derby數據庫

D:\eclipse\Databases\myDerbyDB 

感謝史蒂夫和布賴恩!

相關問題