Я - немного новичок GlassFish, поэтому простите мой ingnorance на предмете.
В основном мы служим игровому веб-сайту, и сделать клиент загружаемым нашим веб-приложением, мы копируем его в каталог в domain1. Проблема с этим состоит в том, что при повторном развертывании веб-приложения загружаемый клиент потерян, и мы должны скопировать его через снова.
Я хотел бы смочь сохранить клиент, загружаемый в некотором внешнем месте и сделать, чтобы GlassFish обеспечил доступ к нему.
Я мог просто hardcode ссылка в веб-приложение, но затем мы потеряем мобильность, таким образом, это будет причиной того, чтобы иметь GlassFish, обрабатывают его.
Я мог также поместить клиент, загружаемый в нашу базу данных, но это походит на плохое использование базы данных и могло также привести к плохой производительности базы данных.
Третья опция, которую я нашел, состоит в том, чтобы добавить пользовательский ресурс, отображающийся от некоторого имени до расположения файла, и затем предоставить метод в одном из моих бобов для получения расположения файла. Это походит на большую работу только, чтобы иметь внешний ресурс, я чувствую, что должен быть более легкий путь.
Таким образом, что я должен сделать?
С GlassFish вы можете определить альтернативный корень документа для обслуживания файлов извне. Из документации:
Альтернативный корень документа
Альтернативный корень документа (docroot) позволяет веб-приложению обслуживать запросы на определенные ресурсы из вне собственного docroot, на основе совпадают ли эти запросы с одним (или подробнее) шаблонов URI в Интернете альтернативные корневые каталоги приложения.
Чтобы указать альтернативный корневой каталог для веб-приложение или виртуальный сервер, используйте свойство alternatedocroot_n , где n - целое положительное число, позволяет указать более одного. Это свойство может быть подэлементом
элемент sun-web-app
вфайл sun-web.xml
или виртуальный сервер имущество. Для получения дополнительной информации о эти элементы см.sun-web-app
в Сервер Oracle GlassFish 3.0.1 Руководство по развертыванию приложений .
Таким образом, вы можете настроить что-то вроде этого:
<property name="alternatedocroot_1" value="from=/ext/* dir=/path/to/ext"/>
См. Документацию для получения полной информации.
Ссылка на загружаемые файлы не обязательно должна быть в том же приложении, что и игровые сервлеты, верно?
Одним из решений может быть создание нового "псевдо" приложения, содержащего только web.xml
и содержимое статических файлов. Вы, конечно, не будете развертывать его в war
форме (ну, только если вы действительно этого хотите), а просто скопируете файлы в распакованный каталог, когда захотите изменить содержимое. Я использую подобную настройку для обслуживания кучи файлов с сервера веб-приложений, который я запускаю.
На работе, в "корпоративной" среде, мы действуем по-другому. У нас есть HTTPD-сервер Apache, работающий как front-end. Он направляет на сервер приложений те вещи, которые должны быть сделаны на Java, но любое статическое содержимое, а также управление cookie, SSL, балансировка нагрузки и другие "веб-серверные" вещи выполняются HTTPD. Это дает некоторое преимущество в производительности при работе с высоконагруженными сайтами и большим количеством больших, но статичных файлов. Это также позволяет нам разделить работу между различными физическими ящиками, что опять же может помочь в производительности.