Сеанс поддерживается файлом cookie с именем JSESSIONID
.Обычно этот файл cookie устанавливается сервером в начале сеанса, и этот файл cookie возвращается от клиента к серверу при каждом последующем отдельном HTTP-запросе в течение сеанса.Клиент (веб-браузер) делает все это прозрачно.Смотрите также Как работают сервлеты?Создание экземпляров, сеансы, общие переменные и многопоточность .
В апплете вам нужно симулировать то же, что и веб-браузер.Когда апплет подключается к сервлету и ему необходим доступ к тому же сеансу, что и к странице, которая обслуживает апплет, вам следует убедиться, что вы добавляете тот же cookie сеанса в тот же HTTP-запрос, который был отправлен апплетом.
Самое простое - передать идентификатор сеанса в качестве параметра апплету:
<param name="JSESSIONID" value="#{session.id}">
(примечание: я предполагаю, что вы используете Facelets в качестве технологии просмотра, если выЕсли вы использовали JSP, то вместо этого вы должны использовать ${pageContext.session.id}
)
Чтобы вы могли соответственно установить необходимый файл cookie сеанса в апплете:
String jSessionID = getParameter("JSESSIONID");
URL servletURL = new URL(getCodeBase(), "yourServletURL");
URLConnection connection = servletURL.openConnection();
connection.setRequestProperty("Cookie", "JSESSIONID=" + jSessionID);
// ...
Это должно дать вамтот же сеанс обратно в сервлете на request.getSession()
.