1

次のSpringBeanを使用して起動するH2Webサーバーを使用した(新しい)ビルドセットアップがあります。

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

これは他の3人の開発者(全員が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がポートを再利用しないときに、ポートが適切に解放されないというものです。

今私の質問:これを修正するにはどうすればよいですか?よくある問題だと思いましたが、何も見つかりませんでした。

4

1 に答える 1

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>
于 2011-04-15T12:04:17.520 に答える