Я разрабатываю локально, используя Spring MVC, Maven и плагин jetty-maven-plugin (7.6.2.v20120308).
Я знаю, что некоторые из вас сочтут это плохой идеей, но я автоматически генерирую некоторые файлы .jsp. Например, у меня есть файл dyn.js, который я хочу сделать динамическим, чтобы он содержал код JSTL/EL.
Вкратце вот что я делаю:
Если вызывается динамический dyn.js, а версии интерпретируемого кеша еще нет, я перенаправляю запрос на специальный контроллер.
Контроллер берет содержимое файла dyn.js и создает файл dyn.js.jsp с этим содержимым в том же каталоге, где находятся другие мои файлы .jsp. Я получаю этот каталог во время выполнения, используя что-то вроде:
getServletContext().getRealPath("/") + File.separator + "WEB-INF" + File.separator + "tags"
После создания файла jsp мой контроллер возвращает путь представления (или ModelAndView), чтобы представление можно было обработать.
После окончательного отображения представления я получаю результирующий контент (используя пользовательскую оболочку Response в фильтре) и сохраняю его в файл кеша.
Этот метод отлично работает! Я очень доволен этим.
Единственная проблема в том, что иногда я получаю эту ошибку при попытке создать динамический dyn.js:
Jul 8, 2012 5:15:12 PM org.apache.jasper.servlet.JspServlet _serviceJspFile
SEVERE: PWC6117: File "C:\somepath\src\main\webapp\WEB-INF\tags\dyn.js.jsp" not found
Когда это происходит, делать нечего. Даже если я обновлю страницу, jsp никогда не будет найден, поэтому мой dyn.js не работает. Затем я проверяю, и файл .jsp существует в моей файловой системе (C:\somepath\src\main\webapp\WEB-INF\tags\dyn.js.jsp)!
Эта проблема возникает случайно. Я не могу воспроизвести проблему по желанию. Я бы сказал, что это происходит в 1/5 случаев.
Кажется, что в некоторых ситуациях Jetty не может «видеть» сгенерированный файл .jsp.
Есть идеи, что может вызвать эту проблему и как я могу ее исправить?
ОБНОВЛЕНИЕ: я использую плагин jetty-maven версии 7.6.2.v20120308.