Я подозреваю, что по какой-то причине инициализация вашего контекста вызывается более одного раза. Вы видите это заявление о печати несколько раз "Приложение X запускается"? Если это вызывается несколько раз, то способ убедиться, что ваши свойства не загружают новые данные, это убедиться, что они загружаются только один раз ... см. Код
....
private static Properties props = null;
....
public void contextInitialized(ServletContextEvent servletContextEvent) {
// Get the context
ServletContext servletContext = servletContextEvent.getServletContext();
// Set a context attribute
try {
// props.load(servletContext.getResourceAsStream(file_name));
if (props == null)
{
props = new Properties();
props.load(getClass().getClassLoader().getResourceAsStream(file_name));
}
System.out.println(" Application X is starting");
servletContext.setAttribute("h1",props.getProperty("home.h1"));
servletContext.setAttribute("h2",props.getProperty("home.h2"));
System.out.println("h1"+servletContext.getAttribute("h1"));
System.out.println("h2"+ servletContext.getAttribute("h2"));
} catch (Exception e) {
System.out.println(" Error setting context attribute: " + e.getMessage());
}
}
Используя нулевое состояние, чтобы проверить, загружен ли он ранее, вы можете убедиться, что он загружен только один раз. Конечно, вы можете использовать логический или какой-то другой индикатор.