我认为我继承了错误的代码,这是交易:在我的命令中,我为远程对象创建一个本地var,然后在其上调用一个方法。结果,如果没有数据,我启动一个计时器。此计时器每2秒广播一个事件,持续调用此命令直到返回数据。然后计时器停止。
我们看到的是该方法返回一次数据,然后下一次没有(欺骗Flex会话错误)。它基本上是交替的。如果我们点击非常快,有时候我们会连续两次工作。
有时,Java dev看到这些请求返回了不同的JSESSIONID。我相信这会导致重复的Flex会话错误。
这是我继承的错误代码吗?有没有其他方法可以做到这一点或某种方式来解决这个问题?
我正在使用Cairngorm;这是执行命令。
public function execute(event:CairngormEvent):void
{
ruleName = (event as FetchReportEvent).ruleName;
var ro:RemoteObject = ServiceLocator.getInstance().getRemoteObject("quantRemoteObject");
if (model.guid != null)
{
var call:AsyncToken = ro.generateReportResultSetGet(model.guid);
call.addResponder(this);
}
ro.requestTimeout
}
public function result(data:Object):void
{
var resultEvent:ResultEvent = data as ResultEvent;
var ac:ArrayCollection = resultEvent.result as ArrayCollection;
timer.stop();
if (ac == null || ac.length == 0)
{
Alert.show("Received unknown data format from the server. Unable to generate report");
model.currentMode = RulesModelLocator.VIEW_MODE;
model.guid = null;
}
else if (ac.getItemAt(0) == false)
{
// no data yet, start the timer for next try
// make sure not cancelled
if (model.guid != null)
{
timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, false);
timer.start();
}
else
{
timer.stop();
}
}
}
private function timerHandler(event:TimerEvent):void
{
var fetchReportEvent:FetchReportEvent = new FetchReportEvent();
fetchReportEvent.ruleName = ruleName;
fetchReportEvent.dispatch();
}
感谢您提供任何有用的提示!