У меня есть два сервлета в отдельном веб-приложении, работающем в одном и том же контейнере (Tomcat).Пусть приложения будут app1 & app2, а servlets - serv1 & serv2.
Я использую serv1 (в app1) для вызова serv2 (в app2). Я также пытаюсь разделить один и тот же сеанс между этими двумя сервлетами.Ниже приведен фрагмент моего кода.
serv1 (app1) :
URLConnection connection = new URL("http://localhost:8080/app2/serv2").openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
HttpSession session = request.getSession(true);
String sessionId = session.getId();
ServletContext myContext = getServletContext();
myContext.setAttribute("MYSHAREDSESSIONID", sessionId);
myContext.setAttribute("SHAREDSESSION", session);
serv2 (app2) :
ServletContext callingContext = getServletContext().getContext("/app1");
String jsessionId = (String)callingContext .getAttribute("MYSHAREDSESSIONID");
server.xml
<Host>
<Context path="/app1" crossContext="true" />
<Context path="/app2" crossContext="true" />
</Host>
Проблема в том, что я получаю исключение нулевого указателя в serv2 getAttribute()
.Основная причина в том, что getContext("/app1")
возвращает null .Имена контекста верны.Я не знаю, почему я не могу получить контекст сервлета.Я не хочу использовать куки или переписывание URL.Пожалуйста, помогите.