2012-10-24 38 views
1

這是我第一次嘗試在JBoss AS7.1.1服務器上使用EJB3.1實體。我發現JBoss的版本7中不再包含HSQLDB。首先,我通過管理控制檯 - >部署 - >管理部署來添加hsqldb.jar。從那以後,我增加了一個新的數據源通過PROFIL - >連接 - >數據源如何在JBoss AS7.1.x中管理HSQLDB

我的第一個示例代碼工作正常:

[...]  
InitialContext ic = new InitialContext(); 
DataSource ds = (DataSource) ic.lookup("java:/DefaultDS"); 
con = ds.getConnection(); 
stmt = con.createStatement(); 
stmt.execute("drop table timers;"); 
stmt.execute("Create table timers(id char(10));"); 
stmt.execute("INSERT INTO timers (id) VALUES (20)"); 
stmt.execute("INSERT INTO timers (id) VALUES (21)"); 
ResultSet number = stmt.executeQuery("select * from timers"); 
[...] 

我的問題是如何管理(=創建,刪除和更新新表)在文件夾jobss \ standalone \ data \ hypersonic中創建的數據庫。目前我沒有「概述」哪些表格被創建,它們的結構和數據。

是否有人有我的小費或教程處理這個問題?謝謝。

回答

1

在我的情況下,就像我在開始時所想的那樣更容易。我需要管理存儲在AS 7.1.x服務器中的數據庫。由於缺少JMX控制檯,我無法通過管理訪問該數據庫。我已經添加了數據源和管理部署,如第一篇文章中所述。

要管理這樣的數據庫,您可以使用'HSQLDB數據庫管理器',爲URL選擇'HSQL數據庫引擎獨立'作爲類型,選擇'jdbc:hsqldb:file:«MY_PATH_TO_DB_FOLDER_IN_JBOSS»'。現在我可以管理服務器和EJB環境之外的數據庫。

謝謝你的幫助和你的靈感。

+1

不客氣。讀者注意:只有當JEE服務器未連接到數據庫並關閉數據庫或JEE服務器本身已關閉時,此訪問方法纔有效。 – fredt

+0

@fredt感謝您的更新。在我的第一篇文章中忘了這個事實。你是絕對正確的。 – FredFloete

0

您總是查詢INFORMATION_SCHEMA表來找出哪些表已經存在。一旦你知道一個表存在,你可以執行一個你知道不需要很長時間的查詢,以便了解數據的狀態。

例如,第一個查詢會告訴你,如果有一個「定時器」表,第二個查詢會顯示是否有表中的任何數據:

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TIMERS' 
SELECT * FROM TIMERS LIMIT 1 

嘗試總是定義一個主爲了加快查詢速度,每張桌子上都有一把鑰匙。

要訪問嵌入在應用程序服務器的數據庫,你應該添加org.hsqldb.server.Servlet類作爲一個servlet然後使用數據庫管理工具和URL連接到應用服務器,如jdbc:hsqldb:http:<your servlet url here>

+0

感謝您的回覆。我聽說過並閱讀過定時器表。我的數據庫似乎是全新的和空的。但那不是我的問題。您的示例可能適用於ejb,但我所尋找的是更多的管理控制檯,或更好地訪問數據庫結構的方式。我是JBoss AS 7.1的新手,但我已經看到了一些舊版本的例子(JBoss 4,5),您可以通過服務器的Web界面管理數據庫。通過雙擊jar,我有一個管理數據庫的視圖,可以創建內容,但數據將被存儲。希望你能理解我。 – FredFloete

+0

增加了從外部訪問數據庫的選項。 – fredt

+0

您是否有完整的示例或其他地方的教程鏈接?舊的「jmx控制檯」的替代方案不存在,對吧? – FredFloete