Ho due webapp in esecuzione in due contesti: c1, c2 (entrambi immediatamente dopo la radice). Ho messo un startupListener in c1 per condividere una variabile, e un altro in c2 per recuperarlo.oggetti condivisi tra webapps dello stesso tomcat
mio startuplistener in C1 è:
public void contextInitialized(ServletContextEvent sce) {
HashMap <String,Object> database ;
//some code to init database
ServletContext context = sce.getServletContext().getContext("/c1");
if (context!=null)
{
context.setAttribute("crossContext", true);
context.setAttribute("cache", database);
}
}
In App c2, è in questo modo:
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext().getContext("/c1");
HashMap<String,Object> database = (HashMap) context.getAttribute("cache");
}
Il contesto nel startupListener di c2 è sempre nullo, ho provato '/ c1 ',' c1 '. Cosa mi manca? (Sto usando tomcat6, se è importante) Grazie
Suo il valore recuperato, che è nullo e non il contesto immagino? –
no, il contesto è nullo, che attiva una NPE nella riga successiva. –