通过Spring以服务器模式启动H2数据库

通过Spring以服务器模式启动H2数据库,spring,h2,server-mode,Spring,H2,Server Mode,我正试图通过Spring以服务器模式启动H2数据库(我希望它在不同的进程中运行)。 目前,我正在使用java Runnable.exec启动h2数据库(使用命令:“java-cp h2.jar org.h2.tools.Server”) 我知道有一种方法可以通过Spring实现。我试图将以下内容添加到spring配置中,但没有成功(它没有启动H2数据库): 如果有任何帮助/想法,我将不胜感激。您确定Server类中的createTcpServer方法真的被调用了吗?你试过在那里设置断点吗 声

我正试图通过Spring以服务器模式启动H2数据库(我希望它在不同的进程中运行)。 目前,我正在使用java Runnable.exec启动h2数据库(使用命令:“java-cp h2.jar org.h2.tools.Server”)

我知道有一种方法可以通过Spring实现。我试图将以下内容添加到spring配置中,但没有成功(它没有启动H2数据库):



如果有任何帮助/想法,我将不胜感激。您确定
Server
类中的
createTcpServer
方法真的被调用了吗?你试过在那里设置断点吗

声明如何以编程方式创建和启动服务器:

import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();
您的Spring定义似乎模仿了相同的初始化。但您可以尝试手动操作-可能是Spring配置中的某些错误

编辑:

我已经尝试过你的配置,它对我有效。什么使您认为服务器没有启动?它不会在标准输出上打印任何内容,但是进程在8043端口侦听。看来还不错。

你有没有:

<beans default-lazy-init="true" ...

最近,我不得不进行相同的配置,以进行单元测试和检查数据,这对我来说是可行的(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>

-tcp
-其他
-支持
8043

我将bean配置更改为lazy init=“false”。现在可以了。谢谢你!
<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>