В приложении Im для написания на сервере сервер будет иметь информацию о пользователях, используя базу данных XML. Пользователь admin также сможет писать и читать информацию об этих файлах. Как я могу работать с одновременным доступом к этим файлам? Единственный способ, которым пользователи/администраторы могут читать/записывать эти файлы, - это запрос на сервер (Sockets, TCP connection), поэтому серверу придется это обработать. Что мне делать? Я мог бы синхронизировать методы сервера, но я не хочу, чтобы пользователь USER A получал доступ к его файлам, пока администратор пишет файлы USER B.Работа с одновременным доступом к XML-файлу с использованием java-сервера
ответ
Использование базы данных вместо файлов - это мое первое предложение, они уже обрабатывают блокировки.
Вы должны опубликовать пример структуры файла. Это можно сделать, если пользователь A имеет свои данные в файле file.xml, а пользователь b имеет свой файл file.xml, заблокировав данный файл и синхронизируя на нем.
Как говорит Джесс, используйте базу данных.
MySQL Поддерживает XML: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html
Большинство баз данных поддерживают XML, или вы можете просто использовать VARCHAR, который достаточно длинный, и получить и поместить туда данные. Если это ваш план, возможно, решение NoSQL также будет работать, это просто постоянный HashMap, который поддерживает блокировку записи, а также другие функции.
Похоже, что между пользователями нет конфликта, что вы также можете сделать, это иметь область для администраторов, чтобы модифицировать файлы, которые вы будете копировать ежедневно, где данные считываются для пользователей.
- 1. Карта с одновременным доступом
- 2. Совместимость с JPA-кешем с одновременным доступом к базе данных
- 3. Ограничить пользователей одновременным доступом к страницам
- 4. Ошибки Azure CloudAppendBlob с одновременным доступом
- 5. Является ли это потокобезопасным с одновременным доступом?
- 6. Проблемы с одновременным доступом к sqlitedatabase на Android?
- 7. Работа Eclipse с доступом к пользовательскому интерфейсу
- 8. Работа с доступом к нулевому указателю
- 9. Работа с Delphi и доступом
- 10. Работа с доступом из Excel?
- 11. Управление одновременным доступом к базе данных Apache Derby
- 12. Работа с ошибкой Spring @Async с доступом к базе данных
- 13. Работа с проблемой при работе с доступом к индексу таблицы
- 14. Вручную создать идентификатор таблицы PostgreSQL с одновременным доступом
- 15. Непоследовательное поведение с одновременным доступом postgresql через node.js
- 16. Что делать, чтобы обновлять данные с одновременным доступом к sqlite 3
- 17. Работа с огромным массивом со случайным доступом к его элементам
- 18. с одновременным использованием нескольких кеш-серверов
- 19. Проблемы с одновременным использованием Toggle и FadeIn
- 20. Актеры Scala с одновременным доступом к общему кешу объектов, scala.concurrent.Lock, реакция и прием
- 21. проблема с доступом к тексту с использованием xpath
- 22. Проблемы с доступом к текущему местоположению пользователя с использованием Ext.util.Geolocation
- 23. Проблемы с доступом к файлу с использованием строки базы данных
- 24. Проблемы с доступом к общей памяти с использованием Large_Int
- 25. Проблема с доступом к Infopath
- 26. Помогите с доступом к node.js
- 27. Проблема с доступом к памяти
- 28. Проблема с доступом к файлу
- 29. Проблем с доступом к файлам
- 30. array_map с доступом к ключам
USER A имеет свой собственный файл usera.xml , а USER B также имеет свой файл oen userb.xml ... Как сделать блокировку по файлу? – fredcrs
Вы держите карту блокировок, указывающих на файл. Каждый раз, когда пользователь входит в систему и запрашивает файл, он получает блокировку этого файла (все это синхронизировано). Другой пользователь теперь может войти в систему и запросить блокировку для другого файла, и он не должен мешать первому пользователю. – Jes
Могу ли я заблокировать файл FileChannel, чтобы реализовать карту блокировок? – fredcrs