Обновление файлов XSLT в развернутом приложении Java EE без повторного развертывания? - PullRequest
1 голос
/ 28 марта 2011

У меня есть приложение Java EE, которое принимает XML и применяет к нему XSLT для генерации HTML.Этот процесс происходит в пользовательском сервлете.Обычно это используется для создания частей контента на определенных веб-страницах.Поскольку фактические данные уже хранятся в формате XML, имеет смысл просто выполнять преобразования в сервлете.

Это было смоделировано на основе того, как CruiseControl создает отчеты о сборке.Сервлет кэширует сгенерированный HTML, чтобы каждый раз не подвергаться затратам на преобразование.DOM, представляющий файл XSL, также кэшируется в памяти.

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


Обновление

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

  1. Как только обнаружен новый XSLT, кэшируйте сам XSLT (пока не будет обнаружена новая версия)
  2. Сохраняйте кэшированные версии сгенерированного HTML, обновляя их при появлении нового XSLT.

1 Ответ

2 голосов
/ 28 марта 2011

Вместо того, чтобы помещать XSLT в файл war, я бы предпочел иметь настраиваемую папку xslt вне моей войны; под «настраиваемым» я подразумеваю, что есть файл конфигурации (свойства или другие форматы), который сообщает веб-приложению путь к папке xslt. Затем вы можете периодически отслеживать содержимое этой папки, и если какой-либо XSLT изменяется, то вы лишаете законной силы соответствующий кеш, перезагружаете XSLT и начинаете использовать новый. Вы также должны быть осторожны с атомарностью операций: аннулирование кэша и перезагрузка XSLT могут нарушить текущий запрос на обслуживание для контента, сгенерированного этим XSLT.

...