Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > tomcat. Автоматическая загрузка приложений.


Автор: olegrolik 7.12.2007, 17:50
После запуска томката, запускаются все приложения. Как сделать так, чтобы они не запускались?

Автор: Samotnik 7.12.2007, 17:52
В броузере строчка
http://localhost:8080
Выбераеш Tomcat Manager  и делаеш всем поректам там стоящим  STOP

Автор: Kangaroo 7.12.2007, 18:06
olegrolik, была похожая тема. Там помню много вариантов предлагали. Поищите..

Автор: olegrolik 7.12.2007, 20:18
Kangaroo, ищу уже пол часа, задолбался. Наверняка дело в одной строке какого-нибудь xml-файла.

Автор: Kangaroo 7.12.2007, 22:35
olegrolik, 
м-да, что-то я сам не могу найти... или я не умею пользоваться, или ..

Ладно, попробую найти у себя в памяти:
1) Спрятать проект на один подкаталог ниже webapps, томкет не найдет его тогда
2) Испортить web.xml, тогда оно точно не поднимится..

Кто-нибудь помнит эту тему!? 

PS
Нашлась http://forum.vingrad.ru/forum/topic-175050.html smile Но информации не густо.

Автор: olegrolik 8.12.2007, 12:36
Я не об это спрашиваю. 
Объясню на пальцах. 
Томкат только что был запущен. Захожу в управление приложениями (manager) и вижу, что все приложения там "Start".
Я хочу, чтобы все приложения были там "Stop"!!

Автор: ivg 9.12.2007, 00:11
Возможно start/stop предназначены для временного отключения вэб-приложений на работающем сервере. А для "полного" отключения deploy/undeploy(remove).
Только ведь remove ещё не означает, что приложение будет удалено из файловой системы сервера. Вот вариант, который возможно вам подойдёт.
1. создаёте на сервере папку, например C:\mywebapp, распаковываете туда ваш .war. Либо переносите папку вашего приложения из ${catalina.home}\webapps в другое место.
2. там же на сервере создаёте файл, например c:\myapp.xml след. содержания:
Код

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:/mywebapp">
</Context>

Затем для "включения/выключения" приложения можно использовать Tomcat Manager:
Код

Context Path (optional): <здесь путь к контексту, какой хотите, например /shocetake >
XML Configuration file URL:file:/c:/myapp.xml

нажимаете Deploy. Или через GET запрос http://localhost:8080/manager/deploy?path=/shocetake&config=file:/c:/myapp.xml
В результате в папке ${catalina.home}\conf\Catalina\<hostname>\ появится файл shocetake.xml, и Tomcat "подхватит" приложение.
Для "выключения" приложения делаете Undeploy. Заметьте, что при этом содержимое C:/mywebapp остаётся на месте, удаляется только файл shocetake.xml из ${catalina.home}\conf\Catalina\<hostname>\, в результате после перезапуска Tomcat приложение не будет запущено.

Автор: olegrolik 10.12.2007, 10:24
Цитата(ivg @ 9.12.2007,  00:11)
Затем для "включения/выключения" приложения можно использовать Tomcat Manager:
Код

Context Path (optional): <здесь путь к контексту, какой хотите, например /shocetake >
XML Configuration file URL:file:/c:/myapp.xml


Вот этот момент мне не понятен. Судя по всему, это xml-файл. Какой?

Sorry. Всё понял smile

ivg, спасибо. Я понял смысл этой идеи, но это не то, что мне нужно. Гораздо проще в менеджере нажимать кнопку STOP после старта томката.
Вы просто меня не поняли.
Уж не знаю как объяснить. Просто хочу зайти в manager и увидеть, что все приложения там остановлены.
Должна быть опция такая в конфигурационном файле. Я уверен!

Автор: AlexeyVorotnikov 10.12.2007, 12:23
Ну неужели почитать документацию религия не позволяет??? Три дня ждать ответа, когда он находиться за несколько секунд!
Код

      <Host name="localhost"  appBase="webapps" deployOnStartup="false"
            unpackWARs="true" autoDeploy="false">



Только предупреждаю: отключение deployOnStartup и autoDeploy выключит все приложения, в том числе и дефолтовое, и Tomcat Manager.
Забыл ещё одну вещь сказать: вышеизложеное верно для Tomcat 6.0. Для других версий не проверял.

Автор: Kangaroo 10.12.2007, 12:33
AlexeyVorotnikov, я думаю это разные вещи. Deploy и Start/Stop. olegrolik хочет, чтобы приложения были Stop, а для этой конфигурации они даже незадеплоятся.
Или я ошибаюсь?  smile 

Автор: olegrolik 10.12.2007, 12:45
Цитата(AlexeyVorotnikov @ 10.12.2007,  12:23)
Ну неужели почитать документацию религия не позволяет??? Три дня ждать ответа, когда он находиться за несколько секунд!
Код

      <Host name="localhost"  appBase="webapps" deployOnStartup="false"
            unpackWARs="true" autoDeploy="false">



Только предупреждаю: отключение deployOnStartup и autoDeploy выключит все приложения, в том числе и дефолтовое, и Tomcat Manager.
Забыл ещё одну вещь сказать: вышеизложеное верно для Tomcat 6.0. Для других версий не проверял.

А можно как-то запустить приложение без manager'а ?

Kangaroo, получается, что запуск приложения при запуске томката, это и есть деплой. Даже если приложение уже развёрнуто. Т.е. этот вариант срабатывает. Жаль, что manager не работает :(

Автор: Kangaroo 10.12.2007, 13:27
Цитата(olegrolik @  10.12.2007,  11:45 Найти цитируемый пост)
А можно как-то запустить приложение без manager'а ?

Судя по http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html страничке нужно autoDeploy="true". Только тогда можно будет без манагера, томкет автоматически будет деплоить измененные приложения.
Но будет ли работать конфигурация AlexeyVorotnikov'a без autoDeploy="false" ? Проверь

Автор: olegrolik 10.12.2007, 13:41
Kangaroo, не. Такой вариант не подходит. Я бы хотел, чтобы на сервере было два приложения, manager и myapp. По умолчанию myapp должно быть остановлено. Ну а manager нужен для управления приложением myapp.

Автор: Kangaroo 10.12.2007, 13:50
olegrolik, а если одно приложение - почему бы просто не нажать стоп в менеджере? Или ты так часто перегружаешь Томкет?

Автор: AlexeyVorotnikov 10.12.2007, 15:08
Что-то меня эта тема увлекла.
Почитав доки smile и даже исходники Tomcat'а я пришёл к выводу, что в Tomcat'е не предусмотрена такая возможность чтобы задеплоеное приложение не запускалось бы при старте Tomcat'а.
(Причём, похоже, что доки отстают от версии самого Tomcat'а. Например, раздел Server Startup остался ещё от 5-ой версии.)

Автор: olegrolik 10.12.2007, 15:57
Kangaroo, не хочу чтобы при рестарте сервака работало моё приложение.
Допустим приложение остановлено и не работает. 
Произошёл плановый рестарт сервера. Сервак загрузился, загрузился томкат, и вместе с ним все приложения. И в том числе загрузилось то, которые было остановлено специально.  Ну и получится, что оно загружено. Это не есть правильно. 


AlexeyVorotnikov, что ж... тогда придётся использовать то, что есть.

Закрываем тему?

Автор: ivg 10.12.2007, 16:04
Цитата(AlexeyVorotnikov @  10.12.2007,  15:08 Найти цитируемый пост)
и даже исходники Tomcat'а 

Гы.  smile
А вобще это хорошо. Согласен, что не предусмотрена. Принципиально можно сделать реализацию org.apache.catalina.Context, унаследовав от org.apache.catalina.core.StandardContext, которая не будет стартовать контекст, при старте сервера. В конфигурации, в теге <Context ..... > есть возможность указывать класс реализации. Но, в нашем случае, я думаю, "Овчинка не стоит выделки"  smile 

Автор: AlexeyVorotnikov 10.12.2007, 16:15
Смотря, что за овчинка. Если такое поведение сервера абсолютно необходимо, можно и свою реализацию Context'а написать.

Автор: olegrolik 10.12.2007, 17:15
ivg,  "Овчинка не стоит выделки"  согласен.
AlexeyVorotnikov, а насчёт своей реализации, то получится,  что при переносе приложения, веб сервер тоже прийдётся переносить. Это не есть хорошо.

Вывод - так сделать не получится.
Тему пока не закрываю - вроде не слабый наплыв сюда smile

Автор: Kangaroo 10.12.2007, 17:27
olegrolik, можно еще написать ant таск, который сначала стартует томкет, а потом останавливает твое приложение.
Это, так сказать, обходной вариант smile

Автор: olegrolik 10.12.2007, 18:03
Kangaroo, я только знаю как запускать антовский скрипт через IDE. Да и всё равно это всё не то! Я придумал другой способ - управление сервлетом через сервлет. Ну это уже другая тема.
Всем спасибо!!!

Автор: AlexeyVorotnikov 10.12.2007, 19:02
Цитата(olegrolik @ 10.12.2007,  18:03)
Kangaroo, я только знаю как запускать антовский скрипт через IDE. Да и всё равно это всё не то! Я придумал другой способ - управление сервлетом через сервлет. Ну это уже другая тема.
Всем спасибо!!!

Ну и замечательно! Дальнейших вам успехов в остановке приложений и сервлетов! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)