У меня проблема с приложением struts 2. Пользователь 1 успешно входит в систему и перенаправляется на какую-то страницу. После этого пользователь 2 пытается войти со своего компьютера, она перенаправляется на целевую страницу пользователя 1.
Я не уверен, является ли это проблемой с веб-контейнером (веб-логикой) или какой-то проблемой в моем кодировании. Я не могу понять, где я могу ошибиться и как сервер может предоставлять данные из сеанса другого пользователя.
Действие входа в систему реализовано с учетом сеанса, у меня есть сеттер и геттер для карты сеанса. Если действие входа в систему завершается успешно, пользователь перенаправляется к другому действию, где действие снова реализует сеансовые функции.
Проблема действительно странная. Может ли кто-нибудь предложить какие-либо причины, почему это может происходить.
Кроме того, чтобы добавить сложности, одно и то же приложение ear отлично работает локально. Проблема возникает только тогда, когда я пытаюсь развернуть его на тестовом сервере.
Вот код интерцептора. Я не думаю, что это небезопасно для потоков.
public class UserAuthentication extends AbstractInterceptor
{
public UserAuthentication()
{
}
public void init(){//System.out.println("init'd");
}
public void destroy() {System.out.println("destroyed");}
public String intercept(ActionInvocation invocation) throws Exception
{
String className = invocation.getAction().toString();
Map OHRMS = ActionContext.getContext().getSession();
System.out.println("EmpInfoUpd: " + new Date() + " Inside the interceptor: ");
System.out.println("EmpInfoUpd: " + new Date() + " Interceptor called for action: " + className);
System.out.println("EmpInfoUpd: " + new Date() + " Now printing the entries of session map from interceptor: " + OHRMS);
Employee temp = (Employee)OHRMS.get("emp");
if(temp==null)
{ System.out.println("EmpInfoUpd: " + new Date() + " The session had no \"emp\" object. Interceptor returned \"login\" ");
return "login";
}
System.out.println("EmpInfoUpd: " + new Date() + " The session had \"emp\" object with Employee name: " + temp.getFullName()+ " Interceptor returned \"login\" ");
return invocation.invoke();
}
}