Я создал простое веб-приложение на Java с компонентом сеанса с сохранением состояния.Я хочу, чтобы он вел отдельный список целых чисел для каждого нового клиента.
мой удаленный интерфейс
package Emote.ejb;
import java.util.List;
import javax.ejb.Remote;
@Remote
public interface EmoteRemote {
void addElement(int e);
void removeElement(int e);
List<Integer> getElement();
}
мой компонент Stateful
package Emote.ejb;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateful;
/**
*
* @author
*/
@Stateful
public class EmoteStateful implements EmoteRemote{
List<Integer> values = new ArrayList<>();
@Override
public void addElement(int e) {
values.add(e);
}
@Override
public void removeElement(int e) {
values.remove(new Integer(e));
}
@Override
public List<Integer> getElement() {
return values;
}
}
JSP-страница
<%@page import="java.util.List"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="Emote.ejb.EmoteRemote"%>
<!DOCTYPE html>
<%!
private static EmoteRemote values;
public void jspInit() {
try {
InitialContext ic = new InitialContext();
values = (EmoteRemote) ic.lookup("java:global/EmoteCaps/EmoteStateful");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
%>
<%
if (request.getParameter("AddNum") != null) {
int e = Integer.parseInt(request.getParameter("t1"));
values.addElement(e);
}
if (request.getParameter("remNum") != null) {
int e = Integer.parseInt(request.getParameter("t1"));
values.removeElement(e);
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Welcome</h1>
<form name="abc" method="post">
<input type="text" name="t1"/><br>
<input type="submit" value="Add" name="AddNum"><br>
<input type="submit" value="Remove" name="remNum">
<%
if(values != null){
List<Integer> nums = values.getElement();
for(int value : nums){
out.println("<br>" + value);
}
out.println("<br> Size" + nums.size());
}
%>
</form>
</body>
</html>
Сначала я запускаю программу и добавляю значения всписок.Затем я открыл другой браузер и назвал ту же программу по ее URL.Я надеялся, что он вернет мне новый список массивов, который пуст, вместо этого он вернул мне тот же список массивов, который я создал в предыдущем экземпляре браузера.
Но я хочу сохранить отдельный список массивов для каждого клиента,
Как создать отдельный экземпляр компонента Stateful bean для каждого клиента и поддерживать его?.
Заранее спасибо.