如何使用ActionScript访问Remoteobjects?

时间:2011-05-20 20:02:56

标签: flex actionscript-3 blazeds remoteobject

这个问题在很多地方都有讨论,但没有一个解决方案对我有用。接下来的事情:在我的mxml代码中,一切都很完美:

<s:RemoteObject id="remotetest" destination="Hibernatetest" endpoint="http://praiseJESUS/blazeds/messagebroker/amf" result="remotetest_resultHandler(event)" fault="remotetest_faultHandler(event)"/>

<s:Button x="1248" y="401" label="Laden" click="remotetest.getCells()"/>

protected function remotetest_resultHandler(event:ResultEvent):void
{
  var cellList:ArrayCollection = event.result as ArrayCollection;
}

现在,这完美无缺。另一方面不起作用的是:

var ro:RemoteObject = new RemoteObject;
var cs:ChannelSet = new ChannelSet;
var c:Channel = new AMFChannel("my-amf","http://JESUSAGAIN/blazeds/messagebroker/amf");
cs.addChannel(c);
ro.channelSet = cs;
ro.destination = "MyClass";
ro.source = "myNamespace.MyClass";
ro.getOperation("myfunction()").send();

这应该工作 - 不知道为什么它没有。任何提示?

1 个答案:

答案 0 :(得分:1)

在检查RemoteObject的代码时,我找到了以下代码片段:

mx_internal function initEndpoint():void
{
    if (endpoint != null)
    {
        var chan:Channel;
        if (endpoint.indexOf("https") == 0)
        {
            chan = new SecureAMFChannel(null, endpoint);
        }
        else
        {
            chan = new AMFChannel(null, endpoint);
        }
        channelSet = new ChannelSet();
        channelSet.addChannel(chan);
    }
}

这表明,如果定义了端点,则RemoteObject-Class将创建自己的channelset。尽管看起来这和我所做的一样,我不可能,因为下面的代码实际上是有效的,不像我的第一次尝试。

var ro:RemoteObject = new RemoteObject("Hibernatetest");
            ro.endpoint = "http://Jesus/blazeds/messagebroker/amf";
            ro.myfunction();

当定义通道集时,似乎必须非常小心。也许有人可以就此事启发我。