Вопрос

Я собираюсь развернуть несколько приложений Grails на вершине одного сервера Tomcat, и у меня есть следующие сомнения:

  1. С точки зрения использования памяти: имеет ли различие, чтобы поставить общие грастины Libs в соответствии с Shared / lib вместо того, чтобы поместить их в файлы войны каждого приложения? Есть ли список этих банок?
  2. Если это так, есть ли механизм не упаковать эти банки в файле войны для «производства» окружающей среды? Я использую NetBeans 6.7.
  3. Я собираюсь использовать Tomcat 5.5; Есть ли опыты, которые рекомендуют использовать 6.0 вместо этого?

Спасибо

Это было полезно?

Решение

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

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

Смотрите также:

Tomcat загружает один и тот же файл библиотеки в память дважды, если они находятся в двух веб-приложениях?

Другие советы

1) Положить банки в Shared / Lib или Common / lib могут уменьшить объем памяти, необходимой в Permgen. IMHO Самое большое преимущество заключается в том, что загрузка файла войны намного быстрее. Но имейте в виду, что сказал Tripwird, поделились бабами завязывают все развертываемые приложения к той же версии Grails. Обновление становится игрой «Ничего или все».

2) Если вы используете

grails prod war --nojars

Тогда весь файл JAR исключен из войны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top