Пусть скорость находит шаблоны в войне - PullRequest
0 голосов
/ 14 мая 2018

Я использую шаблоны Velocity, которые я храню в src/main/webapp/templates.

Службе REST моей Джерси необходимо найти эти шаблоны. Локально в моем Eclipse (с плагином Sysdeo) я использовал

p.setProperty("resource.loader", "class");
p.setProperty("class.resource.loader.class",
    "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");

, чтобы заставить Tomcat найти шаблоны (которые я получил от https://stackoverflow.com/a/38812523/927493). Теперь, когда я развертываю войну для "настоящего" Tomcat, ресурсы не найдены (Невозможно найти ресурс ' шаблоны / FreigabeNeu.vm ')

Возможно, мне нужно установить свойства на что-то другое, но я просто не могу понять, как мне это нужно сделать.

Я проверил, что каталог templates действительно скопирован в главный каталог войны.

1 Ответ

0 голосов
/ 15 мая 2018

ClasspathResourceLoader будет загружать ресурсы из classpath , а не просто из произвольного места в файле WAR.Это означает, что если ваши шаблоны находятся в /webapp/templates в вашем WAR-файле (или где-либо еще), то btu этот путь отсутствует в classpath , тогда они не будут найдены.

Если это веб-приложение, то вы действительно хотите использовать Velocity Tools WebappLoader, который использует ServletContext для загрузки файлов из самого контекста.Это позволяет читать файлы практически из любого места в веб-приложении, даже из файлов WAR и т. Д.

Возможно, вам придется перепроверить, чтобы увидеть, какова структура вашего файла WAR - именно там, где templates/каталог заканчивается - чтобы убедиться, что у вас правильный базовый путь.Я предполагаю, что они окажутся либо под /templates, либо /webapp/templates, но я подозреваю, что первое более вероятно ... каталог webapp с большой вероятностью окажется корнем файла WAR, поэтому /templates, вероятно, правильно.

...