Какой хороший способ параметризации "статического" контента (например, CSS) в веб-приложении Tomcat? - PullRequest
3 голосов
/ 27 апреля 2010

Некоторые из наших CSS-файлов содержат параметры, которые могут варьироваться в зависимости от места развертывания (dev, QA, prod). Например:

 background: url(#DOJO_PATH#/dijit/themes...)

, чтобы избежать жесткого кодирования пути к определенной CDN или локальной установке Dojo.

Эти значения текстуально заменяются действительными значениями сценарием развертывания, когда он копирует содержимое веб-приложения в каталог веб-приложений Tomcat. Таким образом, один и тот же файл архива развертывания (файл WAR + TAR, содержащий другую конфигурацию) может быть развернут в dev, QA и prod, с различными параметрами, предоставляемыми файлами конфигурации для конкретной среды.

Однако я бы хотел сделать содержимое WAR (включая шаблоны CSS-файлов) независимым от этого сценария внутреннего развертывания. Поскольку мы не можем контролировать сценарий развертывания, все, что я могу сделать, - это настроить Tomcat с #DOJO_PATH# и т. Д. В качестве переменных среды в context.xml приложения и использовать Tomcat для вставки этих параметров в CSS во время выполнения .

Я мог бы превратить CSS-файлы в сгенерированные JSP, но мне это немного уродливо. Более того, замену необходимо выполнять только один раз для каждого развертывания приложения, поэтому многократное динамическое создание таблиц стилей с использованием JSP будет довольно расточительным.

У кого-нибудь есть альтернативные идеи или инструменты для этого? Мы привержены Tomcat и замене этих параметров при развертывании или во время выполнения (т. Е. Не во время сборки).

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

То, что вы делаете в данный момент, кажется мне лучшим решением.

Вы можете легко написать эти файлы для обслуживания сервлетом и динамически заменить их содержимое, используя некоторую технологию рендеринга представлений, такую ​​как Freemarker (или даже собственную систему письменных шаблонов для замены ключевых слов, но с этим связаны определенные затраты поэтому.

Tomcat может обслуживать эти ресурсы гораздо эффективнее, если они действительно статичны во время выполнения. Кроме того, если вы подключаете свой сервер Tomcat к Apache, то вы можете заставить Apache обслуживать статический контент, не затрагивая сервер Tomcat, таким образом сохраняя пул потоков JVM меньшим и менее загруженным.

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

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

...