Запись и чтение в локальный файл с Java RS
Я написал небольшое веб-приложение, которое позволяет клиенту POST-значения, а затем получить сумму этих значений, используя сервер Glassfish в Intellij. Я хочу, чтобы сумма сохранялась при перезапусках службы. В настоящее время сумма отслеживается с помощью ресурса Singleton, поэтому ее можно использовать совместно с несколькими различными классами. Есть ли способ, которым я могу написать и прочитать файл в локальном каталоге? Что-то вроде:
src:
Singleton
Rest of classes
res:
PersistentDataFile
1 ответ
Да, Вы можете записать данные в локальный файл, но их не должно быть в resources
каталог. Потому что, если вы это в resources
каталог, он станет частью вашего WAR
файл и позже, если вы развернете обновленный WAR
файл, этот файл будет переопределен.
Сейчас есть 2 решения -
1) Храните данные в файле, размещенном за пределами вашего веб-приложения. Тем не менее, вам нужно справиться multi-threading
и вы должны написать код, чтобы избежать чтения / записи файла более чем на один thread
то есть в более чем 1 request
,
2) Рекомендуемый подход - для обработки таких ситуаций хранение таких данных в database
Рекомендуемый подход. В этом подходе также необходимо обрабатывать изменение данных более чем одним thread
, Тем не менее, такие ситуации могут быть легко решены путем написания соответствующих SQL
запрос, по которому чтение и запись могут быть выполнены в одном query
(не всегда возможно) или поддерживать некоторые version
столбец или last modified timestamp
столбец в базе данных.