Tomcat 4.1.29 и Ant
Днес реших да забързам процеса на пускане на уеб приложения с Tomcat. Просто не ми хареса да спирам/пускам сървъра всеки път, когато компилирам нова версия на WAR-а. И с помощта на Google попаднах на следните “задачи” за Ant :
WAR file Remote Deployment using Ant - Catalina tasks
След известна доза борене с Ant - дефиниране на променливи, подмяна на директории, стигнах до момента, в който най-накрая задачата “list” тръгна! Но какво беше учудването ми като в конзолата ми се изсипа HTML код и червен ред сигнализираше за грешка при изпълнението. Тогава се сетих, че една от променливите имаше странна стойност, която ми се стори още на първо гледане потенциален проблем :
tomcat.manager.url=http://localhost:8080/manager/html
И след повторно търсене в Google намерих второ описание на същия процес на настройка : TomcatAntTasks, този път с вярното url:
tomcat.manager.url=http://localhost:8080/manager
Щастливо разглеждах резултата от изреждането на стартираните в момента уеб приложения в конзолата на Eclipse-а си. ![]()
Тогава реших, че е време да подкарам и “сериозните” задачи - спиране, премахване, инсталиране и стартиране на уеб приложения. Най-красивото се крие във факта, че изобщо няма нужда да се рестартира Tomcat сървъра с цел да се deploy-не новото приложение. А това спестява време и нерви.
Но радостта ми беше кратка. След като спрях успешно приложението, над което работя, се опитах да го премахна, за да инсталирам и пусна новата му версия. Премахването обаче даде грешка:
remove:
[undeploy] FAIL - Cannot remove document base for path /cartTest
тново Google беше включен в играта. Излиза, че има проблем с изтриването на struts.jar от deploy-натото приложение и поради тази причина не успява да го премахне!
Намерих и Бъг #10026 в Tomcat 4, който не е оправен. Състои се в това, че ако се зарежда DTD от JAR файл, който се намира в ${webapp.name}/WEB-INF/lib директорията, то JAR файлът остава заключен до спиране на виртуалната машина - struts.jar в моя случай. Тук се посочва и вероятно решение - вместо да се включва JAR файл, той да бъде разархивиран и сложен в ${webapp.name}/WEB-INF/classes.
Май е време просто да мина на Tomcat 5, където този проблем не съществува вече
П.С. Вече се сваля…


