Контроль, когда умирают сервлеты - PullRequest
0 голосов
/ 03 мая 2011

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

Я использую websphere 7, есть ли место, где я могу настроить, когда умирает сервлет и рождается новый сервлет?

Я думаю, что слишком неуклюже перезагружать конфигурациюконтекст сервлета при новом запросе.


Редактировать: у меня есть планировщик, который создаст новый поток для проверки конкретного файла данных, если файл данных был новым, он создаст хэш-карту(с содержимым файла данных) в качестве атрибута в контексте сервлета.

Теперь сервлеты проверят контекст сервлета для hashmap и скопируют его в статический hashmap для совместного использования сервлетами, когда они простосоздал и вызвал init ().Но проблема в том, что сервлет не умрет во время выполнения, он просто сделает запланированное действие неработающим.

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Я использую websphere 7, есть ли место, где я могу настроить, когда умирает сервлет и рождается новый сервлет?

Нет.

Изменить: у меня есть планировщик, который создаст новый поток для проверки конкретного файла данных, если файл данных был новым, он создаст хэш-карту (с содержимым файла данных) в качестве атрибута в контексте сервлета.

Теперь сервлеты проверят контекст сервлета для hashmap и скопируют его в статическую hashmap для общего использования сервлетами, когда они только что созданы, и вызовут init ().Но проблема в том, что сервлет не умрет во время выполнения, он просто сделает запланированное действие неработающим.

Рефакторинг настроек в отдельный объект данных (а не в поля экземпляра HashMap или экземпляра сервлета).) для совместного использования экземплярами сервлета.Измените планировщик / будильник для непосредственного обновления общего объекта данных.

0 голосов
/ 03 мая 2011

Почему бы не сохранить эти данные в JNDI, где сервлеты могут получать их, когда им это нужно?Таким образом, у вас есть полный контроль над данными;жизненный цикл сервлета больше не имеет значения.

...