2016-05-24 3 views
0

Я работаю над веб-приложением, в котором я читаю некоторые данные конфигурации, хранящиеся в XML-файле, из сервлета. Я хочу, чтобы данные, считываемые с этого сервлета, были доступны для всех запросов, поступающих на этот сервлет. Таким образом, внутри метода init() этого сервлета я инициализирую глобальную переменную, которая будет считывать содержимое из этого XML-файла, чтобы весь запрос, поступающий на этот сервлет, имел эти данные и не должен был читать из XML-файла опять и опять.Чтение данных файла свойств из сервлета

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

+0

Задавать вопросы лучше работает, если вы задать один вопрос на каждый вопрос. – BalusC

+0

@BalusC Отредактировав вопрос согласно вашим комментариям – KItis

ответ

1

Правило здесь просто местонахождение: если эти данные используются только одного сервлета, он должен быть локальным сервлета, то есть согласно вам предложение:

  • член класса сервлета
  • загружен в init метод сервлета

Но (как просили ваш первоначальный пост), если эти данные могут быть обновлены другой сервлет того же веб-приложения, это имеет смысл двигаться I t на один шаг до атрибута SerletContext. Таким образом:

  • он все еще может быть изначально загружен в init метод сервлета
  • он может быть изменен в любое время любой другой компонент веб-приложение, которое знает имя атрибута.

Вы можете представить множество других способов, используя, например, пользовательские события и использование наблюдаемого шаблона, или путем сопоставления сервлета с особым (и частным) URL-адресом, который сигнализирует о необходимости перезагрузки xml-файла, но IMHO, атрибут контекста сервлета - это простой и простой способ разрешить различным сервлетом обмениваться информацией.

Но остерегайтесь, вам все равно нужен дополнительный mechanisme синхронизации, если ваш веб-приложение предназначено для обслуживается более одного сервера

+0

точно, что я искал. Великий! – KItis

Смежные вопросы