Служить JSP хранится в БД - PullRequest
       14

Служить JSP хранится в БД

6 голосов
/ 03 декабря 2009

Я хочу на сервере страницу JSP, которая хранится в базе данных в виде большого двоичного объекта. Поэтому, если запрос приходит по URL http://mydomain.com/app/list.jsp, я знаю, что нужно перейти в БД для получения списка ресурсов. Jsp.

Я использую пружину и плитки, поэтому сервлет и контроллеры adispatcher настроены и работают в традиционном смысле. Будет ли это в принципе похоже на ресурсный сервлет, которому Spring Web должен обслуживать файлы javascript и сообщения из jar?

Обратите внимание, что JSP будут не просто статическим HTML, у меня будут bean-компоненты (атрибуты модели), связанные со страницей, поэтому я все равно захочу использовать EL для запроса bean-компонента.

Приветствия

Ответы [ 2 ]

3 голосов
/ 03 декабря 2009

Загрузка и компиляция JSP осуществляется в контейнере сервлета. Есть два подхода, которые я могу использовать, чтобы сделать эту функцию возможной:

  1. Изменить сервлет JSP сервлет-контейнера. Если вы используете, скажем, Jetty или Tomcat с открытым исходным кодом, вы можете легко посмотреть на их сервлет JSP и изменить его так, чтобы он считывал JSP из БД. Возможно, вы сможете адаптировать один из них для использования в патентованном контейнере. Это самый прямой способ решения проблемы, но вы попадаете на минное поле потенциальных ошибок.
  2. Создайте CMS в базе данных, как и планировалось, но скопируйте JSP в файловую систему работающего приложения во время работы приложения. Пусть нормальное обнаружение изменений JSP сервера приложений заметит, что изменения происходят. Вы можете обернуть все запросы с помощью фильтра, который проверяет БД на наличие обновленных JSP, копировать JSP во время изменения или использовать запланированное задание для их копирования через определенные интервалы.

В обоих сценариях вам нужно беспокоиться об утечках памяти для выгруженных классов, особенно если в вашем коде используются ThreadLocals или другие статические переменные. Обычные загрузчики JSP уже страдают от проблем, если вы выгружаете WAR или перекомпилируете JSP во время выполнения. Это связано с ограничениями в Java и не может быть легко решено (в зависимости от того, какой JDK используется). Я бы рекомендовал никогда или очень редко менять JSP без перезапуска сервера, если вы не можете избежать этого.

1 голос
/ 07 декабря 2009

См., Например, Eval taglib из пакета Coldtags: http://www.servletsuite.com/servlets/evaltag.htm

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