Этот вопрос старый, но я подумал, что было бы полезно получить правильный ответ здесь.
Филип путает Java на стороне сервера с Java на стороне клиента. Он прав, что нельзя использовать сеансы между двумя серверными платформами, такими как Java (J2EE) и ASP.Net, не используя индивидуальный подход.
Однако апплеты на стороне клиента и, следовательно, должны иметь возможность доступа к информации о сеансе страницы хоста. Проблема заключается в том, что ASP.Net 2.0 добавил флаг HttpOnly для файлов cookie сеанса. Этот флаг не позволяет апплетам JavaScript и Java получать доступ к этим файлам cookie.
Временное решение: отключить флаг HttpOnly для файлов cookie сеанса. Хотя вы можете сделать это в конфигурации в более новых версиях ASP.Net, в предыдущих версиях решением было добавить следующий код в файл Global.asax:
protected void Application_EndRequest(object sender, EventArgs e)
{
/**
* @note Remove the HttpOnly attribute from session cookies, otherwise the
* Java applet won't have access to the session. This solution taken
* from
* http://blogs.msdn.com/jorman/archive/2006/03/05/session-loss-after-migrating-to-asp-net-2-0.aspx
*
* For more information on the HttpOnly attribute see:
*
* http://msdn.microsoft.com/netframework/programming/breakingchanges/runtime/aspnet.aspx
* http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx
*/
if (Response.Cookies.Count > 0)
{
foreach (string lName in Response.Cookies.AllKeys)
{
if (lName == FormsAuthentication.FormsCookieName ||
lName.ToLower() == "asp.net_sessionid")
{
Response.Cookies[lName].HttpOnly = false;
}
}
}
}
Обратите внимание, что даже с этим исправлением не все комбинации браузера / ОС / Java могут получать доступ к файлам cookie. В настоящее время я исследую проблему, связанную с недоступностью файлов cookie сеанса в Firefox 4.0.1 с Java 1.6.0_13 в Windows XP.
Обходной путь заключается в использовании подхода, предложенного доктором Дадом, когда идентификатор сеанса передается апплету в качестве параметра, а затем либо внедряется в URL-адрес запроса (требуется включение сеансов URL-адреса на стороне сервера). конфигурации) или отправлено в виде файла cookie, установленного вручную.