Как обеспечить доступ к внешнему ресурсу (файлу) для веб-приложения GlassFish? - PullRequest
5 голосов
/ 16 июля 2010

Я немного новичок в GlassFish , поэтому, пожалуйста, прости мою неосведомленность по этому вопросу.

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

Я хотел бы иметь возможность хранить загружаемый клиент в каком-либо внешнем расположении и иметь GlassFishпредоставить доступ к нему.

Я мог бы просто жестко закодировать ссылку в веб-приложении, но тогда бы мы потеряли мобильность, поэтому для этого и понадобился GlassFish.

Я мог бы также поставить клиентазагружаемые в нашу базу данных, но это похоже на плохое использование базы данных и может также привести к низкой производительности базы данных.

Третий вариант, который я нашел, - это добавить пользовательское сопоставление ресурсов из некоторого имени в расположение файла, изатем предоставьте метод в одном из моих компонентов для получения местоположения файла.Это похоже на большую работу, просто чтобы получить внешний ресурс, я чувствую, что должен быть более легкий путь.

Так что мне делать?

Ответы [ 2 ]

7 голосов
/ 18 июля 2010

С помощью GlassFish вы можете определить альтернативный корень документа для обслуживания файлов вне войны.Из документации:

Альтернативные корни документа

Альтернативный корень документа (docroot) позволяет веб-приложению обслуживать запросы определенных ресурсов извне своего собственного docrootв зависимости от того, соответствуют ли эти запросы одному (или нескольким) шаблонам URI альтернативных документированных файлов веб-приложения.

Чтобы указать альтернативный документирующий корень для веб-приложения или виртуального сервера, используйте alternatedocroot_n свойство, где n - положительное целое число, которое позволяет указать более одного.Это свойство может быть подэлементом элемента sun-web-app в файле sun-web.xml или свойством виртуального сервера.Для получения дополнительной информации об этих элементах см. sun-web-app в Руководстве по развертыванию приложений Oracle GlassFish Server 3.0.1 .

Так что вы можете настроить что-то подобное:

<property name="alternatedocroot_1" value="from=/ext/* dir=/path/to/ext"/>

Подробную информацию см. В документации.

1 голос
/ 16 июля 2010

Ссылка на ваши загружаемые файлы не обязательно должна быть в том же приложении, что и игровые сервлеты, верно?

Одним из решений будет создание нового «псевдо» приложения, содержащего только web.xml и ваш статический файл. Конечно, вы бы не развернули его в форме war (ну, если вы действительно этого хотите), а просто скопировали файлы в распакованный каталог, когда вы хотите изменить содержимое. Я использую такую ​​настройку, чтобы обслуживать кучу файлов с сервера веб-приложений, который я запускаю.

На работе, в "корпоративной" среде мы делаем вещи по-другому. У нас есть сервер Apache HTTPD, работающий в качестве внешнего интерфейса. Он перенаправляет на сервер приложений все, что нужно сделать на Java, но любой статический контент, а также управление файлами cookie, SSL, балансировка нагрузки и другие вещи "web server-y" выполняются HTTPD. Это дает некоторое преимущество в производительности с сильно загруженными сайтами и большим количеством больших, но статичных файлов. Это также позволяет нам распределять работу между различными физическими блоками, что также может помочь с производительностью.

...