Как правильно управлять веб-приложениями Tomcat в Eclipse? - PullRequest
9 голосов
/ 24 апреля 2009

Раньше я запускал Tomcat отдельно на моей машине. У меня был скрипт Ant, который перестроил бы мой проект, развернул его локально и перезапустил Tomcat. Все это работало нормально, но я не смог отладить веб-приложение в Eclipse.

Итак, я узнал, как настроить Tomcat в Eclipse, и запустил мое веб-приложение. Теперь проблема в том, что я не совсем понимаю, как управлять этим способом. Eclipse настроен на автоматическую сборку моего проекта на основе изменений, но эти изменения не всегда отражаются в веб-приложении. Иногда мне приходится вручную создавать проект и вручную «чистить» сервер, чтобы изменения отражались.

Есть ли где-нибудь правила о том, как управлять этой настройкой? Например, если я изменю только JSP, будет ли он автоматически синхронизироваться? Если я изменю класс сервлета, то мне нужно вручную пересобрать проект? Соответствуют ли эти правила, или я должен просто каждый раз перестраивать и очищать вручную?

Я был бы очень признателен, если бы кто-нибудь дал мне правила наилучшей практики или указал мне хороший ресурс, чтобы научиться управлять этой средой.

PS. Я использую пакет Eclipse 3.4.1 Java EE и Tomcat v5.5

Ответы [ 4 ]

5 голосов
/ 29 апреля 2009

Вы можете использовать Eclipse и Tomcat так, как вы упоминаете. Сначала основы того, как его настроить:

  1. В настройке представления серверов новый сервер Tomcat, указывающий на ваш TOMCAT_HOME
  2. Убедитесь, что ваш проект Eclipse является "веб-проектом". Вам может понадобиться создать фиктивный файл и скопировать некоторые файлы в .settings (посмотрите файлы wst).
  3. Разверните ваш проект в Tomcat, щелкнув правой кнопкой мыши по серверу в представлении «Серверы» и «Добавить и удалить проекты ...», чтобы добавить свой проект на сервер.

Вы можете запустить свой сервер и протестировать его так же, как вы запускали Tomcat вне Eclipse. Если вы запускаете сервер в режиме отладки, вы можете установить точки останова и пройти по коду.

Что касается того, когда вам нужно будет перезапустить сервер, Eclipse обычно довольно хорош в автоматическом развертывании изменений. Вам почти никогда не потребуется перезапускаться для изменений на страницах JSP. Если вы измените класс, он автоматически развернет изменения (обычно), если вы измените тело метода. Если вы измените сигнатуру класса (добавьте или удалите метод или измените аргументы для него), вам почти всегда нужно будет перезапустить. Любые изменения в файлах конфигурации (web.xml или аналогичные) также почти всегда требуют перезагрузки.

Для перезапуска просто нажмите кнопку «Отладка» или «Выполнить» в представлении сервера. Все ваши изменения будут перенесены в Tomcat.

Следует обратить внимание на то, что в конфигурации по умолчанию ваш каталог "webapp" в TOMCAT_HOME не будет использоваться. Вместо этого он будет использовать папку в каталоге рабочей области Eclipse (WORKSPACE / .metadata / .plugins / org.eclipse.wst.server.core / tmp0).

0 голосов
/ 20 мая 2009

Я нашел две важные вещи для понимания:

  • Eclipse не распознает автоматически, были ли файлы изменены вне Eclipse. для этого нужно нажать «Обновить» в проекте, как и F5. Вы также можете изменить настройку на автоматическое обновление, которое, однако, не обнаруживает изменения мгновенно (мое чувство кишки говорит о задержке до 10 секунд)

  • Работа с серверами имеет концепцию «Публикация» файлов в Tomcat. Обычно это происходит автоматически через секунду после любого изменения. Изменение многих классов может вызвать много перезагрузок сервера, что может быть перетаскиванием, если перезагрузка контекста занимает некоторое время (как это делают сложные приложения Spring). Поэтому я изменил настройку, чтобы она не публиковалась автоматически (дважды щелкните экземпляр сервера)

0 голосов
/ 27 апреля 2009

Если вы измените структуру класса, который уже был загружен и использован (добавление / удаление членов, изменение сигнатуры метода и т. Д.), Ваши изменения кода не будут отражены. Это не проблема затмения, а проблема JVM. Если вы вносите простые изменения кода, такие как изменения логики внутри существующего метода, ваши изменения вступят в силу после того, как класс скомпилирован и повторно развернут. Независимо от этого, если вы измените публичную константу, вам придется перестроить свой проект (ы).

0 голосов
/ 24 апреля 2009

Обычно вы должны повторно опубликовать приложение, чтобы получить последние изменения, не забывайте сначала синхронизироваться с файловой системой в случае, если ваши файлы изменяются извне. Вы можете указать, что ваше приложение автоматически перезагружается при изменении, ищите атрибут Auto-reload в server.xml вашего проекта конфигурации сервера. Когда установлено значение true, tomcat автоматически перезагрузит ваше приложение. Кстати, это не всегда хорошая идея. Модифицированные JSP должны работать автоматически, не нужно перезапускать приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...