この質問は古いですが、ここで正しい答えを得ることは価値があると思いました.
Filip は、サーバー側の Java とクライアント側の Java を混同しています。カスタム アプローチを使用しないと、Java (J2EE) と ASP.Net などの 2 つのサーバー側プラットフォーム間でセッションを共有できないという彼の意見は正しいです。
ただし、アプレットはクライアント側であるため、ホスト ページのセッション情報にアクセスできる必要があります。問題は、ASP.Net 2.0 がセッション Cookie に HttpOnly フラグを追加したことです。このフラグは、JavaScript および Java アプレットがこれらの Cookie にアクセスできないようにします。
回避策は、セッション Cookie の HttpOnly フラグをオフにすることです。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;
}
}
}
}
この修正を行っても、すべてのブラウザー/OS/Java の組み合わせが Cookie にアクセスできるわけではないことに注意してください。現在、Windows XP で Java 1.6.0_13 を使用する Firefox 4.0.1 でセッション Cookie にアクセスできない問題を調査しています。
回避策は、Dr. Dad が提案したアプローチを使用することです。この方法では、セッション ID がパラメーターとしてアプレットに渡され、リクエスト URL に埋め込まれます (サーバー側の構成で URL セッションをオンにする必要があります)。手動で設定された Cookie として送信されます。