Я пытаюсь написать простую программу, в которой я могу поместить HashMap в сеанс с областью применения и получить два приложения / контекста, развернутые в виде двух файлов war, обращающихся к HashMap.
Сервлет 1
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException{
PrintWriter out = response.getWriter();
HashMap<String ,String> hm = new HashMap<String, String>();
hm.put("1", "1");
this.getServletContext().setAttribute("usermanager", hm);
this.getServletConfig().getServletContext().setAttribute("usermanager2", hm);
}
Сервлет 2
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException{
HashMap newMap2 = (HashMap) this.getServletConfig().getServletContext().getAttribute("usermanager");
HashMap newMap3 = (HashMap) this.getServletContext().getAttribute("usermanager2");
System.out.println("newmap2 size " + newMap2.size());
System.out.println("newmap3 size " + newMap3.size());
}
Чтобы проверить это, я перезапустил Tomcat 6, затем сначала запустил сервлет доступа 1, чтобы он инициализировал объект Hashmap. Когда я впоследствии получаю доступ к сервлету 2, я получаю ошибку NULL-POINTER, которая указывает на номер строки, где я пытался вызвать newMap2.size ()
Что я делаю не так?
java.lang.NullPointerException
at com.TestServlet.doGet(TestServlet.java:24)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)