2009-10-01 9 views
10

के माध्यम से सर्वर मोड में H2 डेटाबेस प्रारंभ करें I सर्वर मोड (मैं इसे एक अलग प्रक्रिया में चलाने के लिए चाहता हूं) में एच 2 डेटाबेस शुरू करने की कोशिश कर रहा हूं। वर्तमान में मैं जावा Runnable.exec उपयोग कर रहा हूँ h2 डेटाबेस शुरू करने के लिए (आदेश का उपयोग: "जावा -cp h2.jar org.h2.tools.Server")स्प्रिंग

मुझे पता है के लिए एक रास्ता है कि वहाँ वसंत के माध्यम से करो। मैं वसंत विन्यास के लिए निम्न जोड़ने की कोशिश की है, लेकिन यह काम नहीं किया है (यह एच 2 डेटाबेस शुरू नहीं किया):

<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

कोई त्रुटि संदेश मुद्रित? –

उत्तर

11

आप का क्या करें?

+0

मैंने बीन्स कॉन्फ़िगरेशन को आलसी-इनिट = "झूठी" में बदल दिया। यह अब काम करता है। धन्यवाद! – Lin

+0

+1 अच्छी पकड़ ... – skaffman

1

की सराहना करेंगे क्या आपको यकीन है createTcpServerServer कक्षा में विधि वास्तव में बुलाया जाता है? क्या आपने वहां ब्रेकपॉइंट स्थापित करने की कोशिश की है?

H2 tutorial दावों यह कैसे आप प्रोग्राम बना सकते हैं और सर्वर शुरू कर सकते हैं:

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

आपका स्प्रिंग परिभाषा ही प्रारंभ mimick लगता है। लेकिन आप इसे मैन्युअल रूप से करने का प्रयास कर सकते हैं - शायद यह वसंत विन्यास में कुछ गलती है।

संपादित करें:

मैं आपके विन्यास की कोशिश की है और यह मेरे लिए काम करता है। आपको क्या लगता है कि सर्वर शुरू नहीं हुआ है? यह stdout पर कुछ भी प्रिंट नहीं करता है, हालांकि प्रक्रिया 8043 बंदरगाह पर सुनती है। तो यह बहुत ठीक लगता है।

<beans default-lazy-init="true" ... 
अपने स्प्रिंग विन्यास फाइल में

:

3

हाल ही में मुझे यूनिट परीक्षण करने और डेटा की जांच करने के लिए एक ही कॉन्फ़िगरेशन करना पड़ा, यह मेरे लिए काम करता है (वसंत 3.1.4)। तो आपको बस jdbc से कनेक्ट करना होगा: h2: tcp: // localhost: 8043/mem: test और अपने परीक्षण के अंत में थोड़ी देर (सत्य) {} रखना सुनिश्चित करें।

<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>