İki bağlamda çalışan 2 webapps var: c1, c2 (her ikisi de kökten hemen sonra). Bir değişkeni paylaşmak için c1'e bir startupListener koydum ve onu almak için bir tane daha c2'ye koydum.aynı tomcat arasındaki webapps arasındaki paylaşılan nesneler
c1 Benim startuplistener geçerli:
c2 uygulamasındapublic 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);
}
}
, bu şu şekildedir:
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext().getContext("/c1");
HashMap<String,Object> database = (HashMap) context.getAttribute("cache");
}
c2'nin startupListener bağlam hep null
, ben 'denedim/c1 ',' c1 '. Neyi kaçırıyorum? (Tomcat6 kullanıyorum, önemliyse) Teşekkürler
Onun null alınan değer değil sanırım bağlamda? –
no, bağlam null, sonraki satır NPE'yi tetikler. –