2009-10-01 72 views
10

我試圖通過Spring在服務器模式(我希望它在不同的進程中運行)啓動H2數據庫。 目前我使用的Java Runnable.exec啓動H2數據庫(使用命令:「java命令h2.jar org.h2.tools.Server」)通過Spring以服務器模式啓動H2數據庫

我知道,有一種方法可以通過Spring來做到這一點。我嘗試添加以下彈簧的配置,但它沒有工作(它沒有啓動H2數據庫):

<bean id="org.h2.tools.Server" class="org.h2.tools.Server" 
     factory-method="createTcpServer" init-method="start" destroy-method="stop"> 
     <constructor-arg value="-tcp,-tcpAllowOthers,true,-tcpPort,8043" /> 
    </bean> 

    <bean id="org.h2.tools.Server-WebServer" class="org.h2.tools.Server" 
     factory-method="createWebServer" init-method="start"> 
     <constructor-arg value="-web,-webAllowOthers,true,-webPort,8082" /> 
    </bean> 

我希望得到任何幫助/想法

+0

是否顯示任何錯誤消息? – 2009-10-01 10:17:16

回答

11

你碰巧有:

<beans default-lazy-init="true" ... 
在Spring配置文件

+0

我將bean配置更改爲lazy-init =「false」。 現在有效。謝謝! – Lin 2009-10-01 10:49:56

+0

+1好抓... – skaffman 2009-10-01 10:52:17

1

你確定createTcpServer方法在Server類中真的叫嗎?你有沒有試過在那裏設置一個斷點?

H2 tutorial宣稱,這怎麼能編程方式創建並啓動服務器:

import org.h2.tools.Server; 
... 
// start the TCP Server 
Server server = Server.createTcpServer(args).start(); 
... 
// stop the TCP Server 
server.stop(); 

你的春天定義似乎模擬天生相同的初始化。但你總是可以嘗試手動做 - 也許這是Spring配置中的一些錯誤。編輯:

我試過你的配置,它適用於我。是什麼讓你認爲服務器沒有啓動?它不會在stdout上輸出任何內容,但該進程在8043端口進行偵聽。所以它似乎很好。

3

最近我不得不做相同的配置來進行單元測試和檢查數據,這對我很有用(Spring 3.1.4)。然後,您只需要連接jdbc:h2:tcp:// localhost:8043/mem:test,並確保在測試結束時放置一段時間(true){}。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="org.h2.Driver"/> 
    <!--property name="url" value="jdbc:h2:mem:;TRACE_LEVEL_FIlE=4"/--> 
    <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
</bean> 
<bean class="org.h2.tools.Server" factory-method="createTcpServer" init-method="start" destroy-method="stop"> 
    <constructor-arg> 
     <array> 
      <value>-tcp</value> 
      <value>-tcpAllowOthers</value> 
      <value>-tcpPort</value> 
      <value>8043</value> 
     </array> 
    </constructor-arg> 
</bean> 
相關問題