Почему я получаю «HTTP Status 503 - это приложение в данный момент недоступно» в Tomcat 6? - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть приложение, написанное на Struts2 и Spring для DI, и я использую Tomcat 6 в качестве контейнера.Предполагая, что я упаковал приложение как my-application.war после развертывания на Tomcat, я могу получить к нему доступ через http://my -host / my-application .
Когда я удаляю.war файл, Tomcat должен удалить приложение и в соответствии с здесь Когда я пытаюсь http://my-host/my-application, я должен получить:

HTTP Status 404

, но вместо этого я получаю:

HTTP Status 503 - This application is not currently available

При повторном развертывании приложения по тому же пути контекста я получаю странное исключение:

Unable to instantiate Action, [ActionClass], defined for '' in 
namespace '/' Failed to convert value of type [MyClass] to required type 
[MyClass] for property 'myClass': no matching editors or conversion strategy 
found

, в котором ActionClass имеет свойство myClass типа MyClass , который внедряется Spring и по умолчанию является одиночным.Это странно, потому что тип обоих объектов одинаков.Я подозреваю, что приложение не будет полностью развернуто в первую очередь, потому что при перезапуске Tomcat сценарий будет повторяться.Буду признателен за любую помощь в поиске возможной причины этого.

1 Ответ

2 голосов
/ 10 декабря 2011

Ну, я думаю, что нашел ответ.Как я и догадался, проблема была в неправильном увольнении.

Кажется, что развертывание и удаление приложения без перезапуска Tomcat - дело сложное.Когда вы развертываете свое приложение, загрузчик классов Tomcat загружает классы приложения и, как только они загружаются, кажется, что они не будут выгружены при отмене развертывания.А постоянное развертывание и развертывание приложения приведет к серьезной утечке памяти.Этот случай особенно применим к синглетам, поскольку оставшаяся версия объекта в JVM не соответствует вновь развернутому классу.Отсюда и ошибка, которую я получил выше.

Кажется, что безопасный путь перезапускает Tomcat при каждом повторном развертывании любого приложения.
Источники помогли мне найти следующую информацию:

...