Где хранить изображения, CSS и файлы JavaScript на Glassfish? - PullRequest
3 голосов
/ 12 апреля 2011

Я посмотрел вокруг много (поверь мне :), прежде чем писать эти вопросы, и я все еще в замешательстве.Вот сценарий:

Размещение веб-приложения J2EE на glassfish v3 с использованием Restlet 2.0. Файлы шаблонов свободных маркеров находятся в папке / WEB-INF.Шаблоны ссылаются на файлы jQuery / javascript, некоторые статические изображения и таблицы стилей с использованием относительных URL-адресов.

Поскольку не рекомендуется хранить их в / WEB-INF (как указано во многих местах в Интернете), я переместил файлы в папку WebContent


WebContent:
+--Images
   -.jpg, .gif files
+--Styles
   -myStyle.css
+--Scripts
   +--jQLabel
   +--mColorPicker
      +--Images
      +--javascripts
         -.js files

Я имею в видуони находятся в шаблоне freemarker / html как:

<link rel="stylesheet" type="text/css" href="${baseRef}/Styles/myStyle.css"  />

, где ${baseRef} - корневая ссылка сайта.Сайт развернут в / Winbook.Таким образом, URL на локальном хосте для css выглядит следующим образом:

http://localhost:8080/Winbook/Styles/winbookwall.css <- получено с помощью GET </p>

Проблема (и):

Длякаждый из вышеперечисленных ресурсов я получаю по 404 :( Я не уверен, действительно ли это так, как должен хранить css, изображения или сценарии и является ли папка WebContent хорошим местом для ее хранения.

Вопрос (ы):

  1. Почему вышеупомянутое не работает? Я имею в виду, что должна быть ошибка, и я просто не знаю об этом:)
  2. Как лучше всего хранить вышеуказанные файлы на веб-сервере / glassfish?
  3. Как ссылаться на эти ресурсы (в шаблоне HTML / freemarker), если они развернуты в .war?(Они будут развернуты в файле войны, если они будут помещены в WebContent, верно? Это «законно» или хорошая практика? Кажется, что пахнет:)
  4. Нужно ли нам создавать альтернативные корни документов в Glassfish для все таких ресурсов (или эквивалентный класс Каталога в Restlet?)
  5. Каков «лучший» способ / место / для такого развертывания для приложения на основе интрасети для плавного определения местоположения ресурсов?JNDI на основе поиска?(Я не знаю, как это будет работать, другой вопрос, вероятно, о SO;)

Я полностью сбит с толку!Прошло много времени с тех пор, как мне пришлось написать полноценное веб-приложение, и об этом обычно заботились «другие»:)

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Возможно, я опоздал с ответом на этот вопрос, но вот он. Как я уже говорил, Restlet перехватывает URL-адреса, и вы ДОЛЖНЫ использовать класс Directory для возврата статического содержимого - инициализируется путем «war: ///» или «war: /// images /» и т. Д. Для каждой из папок. .

Причина, по которой он не работал, была из-за проблем маршрутизации в Restlet. Папка каталога была «последней» в порядке кодирования URL-адресов. Каталоги создаются с помощью Template.MODE_STARTS_WITH, а остальные (т. Е. Restlets или другие ресурсы) являются Template.MODE_EQUALS

Вы должны либо изменить порядок маршрутизации вручную, либо нажать на верхнюю часть списка URI при маршрутизации.

Надеюсь, что это поможет кому-то наткнуться на ту же проблему.

Вот соответствующий вопрос, на который ответил Джером: Restlet Routing Nightmare

0 голосов
/ 17 сентября 2011

Попробуйте "ресурсные" JAR - см. Здесь: http://alexismp.wordpress.com/2010/04/28/web-inflib-jarmeta-infresources/

...