Преобразуйте свои даты в часовой пояс GMT, когда вы набиваете их в Mongo. Таким образом, никогда не возникает проблема с часовым поясом. Затем просто сделайте математику в поле twitter / timezone, когда вы вытащите данные для презентации.
Все контейнеры сервлетов и контейнеры Java EE строго реализуют эту часть спецификации. Вы можете положиться на тот факт, что слушатели вызываются в порядке, указанном вами в web.xml.
У вас может быть структура данных Application LEVEL (HashMap), которая будет обновляться каждым фильтром / прослушивателем при получении данных из запросов. Это позволит каждому слушателю обновлять только то, что необходимо. Вы можете поместить общий код в базовый слушатель, чтобы избежать дублирования кода.
Почему это неопределенно? Упорядочивание в web.xml является очень конкретно порядком, в котором их называют, это очень ясно указано в спецификации EE Java. Нормально абсолютно полагаться на него.
Казалось бы, вы можете создать ListenerManager, который вы поместите в качестве единственного слушателя, и он будет содержать других слушателей. Когда событие наступает, просто вызовите каждого из других слушателей в том порядке, в котором вы нуждаетесь (возможно, в том порядке, в котором вы их создали в конструкторе ListenerManager).
К сожалению, это означает изменение кода при добавлении прослушивателей, но этого можно избежать с помощью умного использования файлов свойств и кода create-from-class-name.