Вопрос
Я работаю над веб-сайтом, работающим в Tomcat, на котором хранится много данных участников, и я не знаю, как лучше всего их упаковать.
Я хочу иметь возможность легко развернуть войну, не прибегая к предварительному удалению из нее чего-либо.
Моей первой мыслью было выделить данные участников в отдельный каталог вне войны, но моя проблема в том, что часть этого контента должна быть связана с веб-сайтом (изображения и т. д.).
Должно быть лучшее решение, чем развязывание войны с последующим копированием данных.У кого-нибудь есть предложения?
Решение
Ваша первая мысль была верной.Хранение данных во внешней директории является лучшим решением.Вы можете легко решить проблему с изображениями, создав сервлет, который будет обращаться к этому внешнему каталогу по запросу изображения.
Я не могу опубликовать свой код, но вот аналогичный фрагмент, который создает ответ.Вам просто нужно создать класс, расширяющий FileServlet, и написать код для загрузки файла из вашего каталога.
http://snippets.dzone.com/posts/show/4629
Затем добавьте это в свой web.xml:
<servlet>
<servlet-name>My File Servlet</servlet-name>
<servlet-class>my.package.FileServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>My File Servlet</servlet-name>
<url-pattern>/upload/*</url-pattern>
</servlet-mapping>
и каждая ссылка типа http://myapp.com/upload/userimage.jpg будет создан сервлетом
Другие советы
Вам обязательно следует отделить данные от приложения.Поскольку я не уверен в причинах, по которым вы изначально разместили данные участников (очевидно, изображения и что-то еще), я могу предложить предложения, основанные на более идеальной среде.
Если вы храните информацию о множестве разных людей и вам нужен доступ к ней из разных мест, почему бы вам не использовать базу данных?Возможно, даже бесплатный, например PostgreSQL или MySQL?
Если вы храните свои данные в базе данных, их легко получить через Java: либо используйте ORM, например Hibernate, либо просто некоторые базовые библиотеки JDBC.Предполагается, что вы понимаете SQL и уровень базы данных в Java.
Затем, если вам нужен доступ к определенным файлам, вы можете создать сервис-ориентированную архитектуру (SOA) и использовать спокойный веб-сервис для извлечения изображений на основе URL-адреса.Это позволит выгрузить хранилище на другой компьютер в вашей зоне доверия.
Трудно предложить хорошее решение без более подробной информации о проблеме и настройке вашего сервера.