Java SWF闪存上载程序使JSSessionID无效。有没有从服务器端或客户端恢复会话的想法?

Java SWF闪存上载程序使JSSessionID无效。有没有从服务器端或客户端恢复会话的想法?,java,flash,session,Java,Flash,Session,我使用SWF上传器上传文件。我在服务器端使用java Flash正在自动使Java会话无效。SWF团队到目前为止还没有找到任何修复方法 经过一些搜索,我找到了这个,它讨论了在ASP中处理这个问题的方法 在基本PHP中,我们将会话id作为POST参数传递,并手动恢复会话 在ASP.Net中,我们还发布会话id,并使用Global.asax捕捉值 在会话恢复之前,动态添加正确的cookie 像这样,我们是否可以选择用java恢复会话 我也看过这篇文章。但我无法准确理解他们在说什么。可能是因为我在ja

我使用SWF上传器上传文件。我在服务器端使用java

Flash正在自动使Java会话无效。SWF团队到目前为止还没有找到任何修复方法

经过一些搜索,我找到了这个,它讨论了在ASP中处理这个问题的方法

在基本PHP中,我们将会话id作为POST参数传递,并手动恢复会话

在ASP.Net中,我们还发布会话id,并使用Global.asax捕捉值 在会话恢复之前,动态添加正确的cookie

像这样,我们是否可以选择用java恢复会话

我也看过这篇文章。但我无法准确理解他们在说什么。可能是因为我在java会话中声音不够

特别是
upload\u url:“Controller?action=33&JSESSIONID=”,
这一行。他用那条线做了什么。什么是
控制器
&
动作=33

任何从客户端或服务器端恢复会话的建议都将不胜感激


谢谢

如果我正确阅读了链接的SO问题,问题不是会话id无效,而是服务器处理flash对象的方式:它被视为附加客户端,而不是浏览器窗口其余部分的一部分。因此,创建了两个单独的会话,导致上载时id不同或为空

解决方案是手动查找正确的会话id,或强制服务器为新会话分配正确的id。这是通过将jsessionid作为变量转发到Flash来完成的,然后将其作为GET参数添加到HTTP上传请求中,这样就可以在服务器上检索它,并且您可以使用它来查找正确的会话

在本例中,作者使用
Controller
作为servlet的名称,并且
action=33
可能用于调用servlet上的某个方法。这是特定于此特定应用程序的,但对您的解决方案并不重要

对您来说重要的是字符串的结尾:
&jsessionid=

此JSP代码实质上是将java会话id添加到包含上载请求URL的变量中。您可以使用普通Java或任何其他能够访问正确会话id的语言执行此操作-重要的是,它首先传输到Flash插件,然后添加到上传请求,然后再次发送回服务器,然后用于查找或创建正确的会话id以处理上载

这是作者用来创建新会话cookie的代码:

if (request.getParameter("JSESSIONID")!=null) { 
    Cookie userCookie = new Cookie("JSESSIONID", request.getParameter("JSESSIONID"));    
    response.addCookie(userCookie); 
}