Сбой веб-сервера H2 при перезагрузке Jetty - PullRequest
1 голос
/ 14 апреля 2011

У нас есть (новая) настройка сборки с веб-сервером H2, запускающимся с использованием следующего bean-компонента Spring:

<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), но плохо на моем ноутбуке с Windows, возникают проблемы при перезапуске Jetty после обнаружения изменений в коде:

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 голосов
/ 15 апреля 2011

При просмотре вашей конфигурации кажется, что вам не хватает атрибута 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>
...