| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Гостевая книга |
| Автор: 4epT 30.8.2010, 00:43 |
| Добрый вечер! Пишу на JSP гостевую книгу ... сделал класс Сообщение и класс который хранит в себе коллекции сообщений. Возник вопрос ... как сделать так что бы список сообщений постоянно пополнялся ? Базу данных решил не использовать. Сохраняю все в xml файл. При добавлении нового сообщения получается так что я создаю новый экземпляр класса CommentsDB (класс который хранит в себе коллекцию сообщений) и все сообщения которые были до этого удаляются ... Как сделать 1 глобальный экземпляр класса CommentsDB который будет заполнятся 1 раз при создании новой сессии и удаляться при ее завершении? Надеюсь понятно изложил суть проблемы) |
| Автор: Prof_2000 30.8.2010, 11:03 |
| А Singleton не подходит? А вообще, по-моему, правильнее реализовывать паттерн Data Access Object - т.е. интерфейс типа MessageDAO чтоб сохранять и читать сообщения, его реализацию XMLMessageDAO, и синглтоновую фабрику для создания экземпляров. Так в любой момент можно будет перейти к использованию базы(если, например, количество пользователей сильно возрастёт) |
| Автор: 4epT 30.8.2010, 13:16 | ||||
Почитал насчет Singleton, думаю такой вариант подойдет ) Единственное что будет в такой ситуации: Клиент заходит на JSP страницу, стартует его сессия, создается экзепляр класса Singleton ... что произойдет когда в это же время на страницу зайдет другой клиент? В статье в которой я читал там был приведен самый простой вариант:
Наверное можно было попроще задать вопрос) нужно ли реализовывать этот класс "для много поточных приложений" ? И еще один вопрос) не будет ли конфликтов когда в одно и то же время N пользователей начнут читать и писать в один и тот же файл? За это будет отвечать веб сервер? |
| Автор: Prof_2000 30.8.2010, 17:12 |
| Синглтон - общий для всего контекста веб-приложения. Соответственно каждый пользовательский запрос типа "добавить сообщение" обратится к одному и тому же экземпляру. А насчёт конфликтов - сделайте нужные методы synchronized. |
| Автор: 4epT 30.8.2010, 17:29 | ||
Как тогда лучше реализовать Сингелтон? И вообще походу плохая была идея вместо БД использовать XML ... да? |
| Автор: 5ad1sT 2.9.2010, 10:26 | ||||
Вообще все равно что использовать. Если ты реализуешь DAO. |
| Автор: 4epT 2.9.2010, 18:55 |
| А что такое DAO ? можно какой то пример? |
| Автор: rang3r 4.9.2010, 08:07 |
| DAO паттерн(хотя наверно анти-паттерн) который закрывает прямой доступ к данным. Прочитай про это в книге "Шаблоны проектирования" М.Гранда, там и пример и суть. |
| Автор: 5ad1sT 5.9.2010, 21:09 | ||
http://www.ibm.com/developerworks/ru/library/j-genericdao/ Вот хороший пример. |