Tôi có 2 ứng dụng web chạy ở hai ngữ cảnh: c1, c2 (cả hai ngay sau gốc). Tôi đặt một startupListener trong c1 để chia sẻ một biến, và một cái khác trong c2 để lấy nó.đối tượng chia sẻ giữa các ứng dụng web của cùng một tomcat
startuplistener của tôi trong c1 là:
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);
}
}
Trong ứng dụng c2, nó là như thế này:
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext().getContext("/c1");
HashMap<String,Object> database = (HashMap) context.getAttribute("cache");
}
Bối cảnh trong startupListener của c2 luôn là null, tôi đã cố gắng '/ c1 ',' c1 '. Tôi đang thiếu gì? (Tôi đang sử dụng tomcat6, nếu điều đó quan trọng) Cảm ơn
của nó giá trị lấy đó là null và không phải là bối cảnh tôi đoán? –
không, ngữ cảnh là null, kích hoạt NPE dòng tiếp theo. –