H2网络服务器在Jetty重启时失败

时间:2011-04-14 09:58:19

标签: jetty restart h2

我们使用以下Spring bean启动H2 Web服务器的(新)构建设置:

<bean id="org.h2.tools.Server-WebServer" class="org.h2.tools.Server"
    factory-method="createWebServer" depends-on="dataSource" init-method="start"
    lazy-init="false">
    <constructor-arg value="-web,-webPort,8082" />
</bean>

这适用于其他三个开发人员(所有人都运行Mac或Linux),但是当我发现代码发生变化后Jetty重新启动时,我的Windows笔记本电脑上的穷人会遇到麻烦:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'org.h2.tools.Server-WebServer' defined in ServletContext resource [/WEB-INF/spring/appServlet/controllers.xml]:
Invocation of init method failed; nested exception is org.h2.jdbc.JdbcSQLException:
Exception opening port "8082" (port may be in use), cause: "java.net.BindException: Address already in use: JVM_Bind" [90061-154]

理论上说,当Jetty发出重启信号时,端口没有正确释放,和/或H2不会重新使用该端口。

现在我的问题:我该如何解决这个问题?我认为这是一个常见问题,但我找不到任何相关内容。

1 个答案:

答案 0 :(得分:0)

查看您的配置,您似乎缺少destroy-method属性。试试这个:

<bean id="org.h2.tools.Server-WebServer" class="org.h2.tools.Server"
    factory-method="createWebServer" 
    depends-on="dataSource" 
    init-method="start" 
    destroy-method="stop" 
    lazy-init="false">
    <constructor-arg value="-web,-webPort,8082" />
</bean>
相关问题