重复的Flex会话导致我的多个请求具有不同的JSESSIONID

时间:2011-07-07 16:05:40

标签: flex actionscript-3 flex4 blazeds

我认为我继承了错误的代码,这是交易:在我的命令中,我为远程对象创建一个本地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();
    }

感谢您提供任何有用的提示!

1 个答案:

答案 0 :(得分:1)

请阅读this回答。如果您还有问题,请告诉我。