4

上下文:我正在开发一个使用 FDT 开发并使用 Flash CS4 编译的 Flash 应用程序(我需要一个巨大的库)。它应该连接到各种 Weborb 服务。

Weborb 已正确配置。我的服务通过管理控制台正确执行并返回值。Weborb 示例以及使用 Flex 编译的各种测试功能齐全。

问题:当我尝试调整代码以使用 Flash 编译,并像这样设置远程对象时:

var remoteObject = new RemoteObject();
remoteObject.destination = "GenericDestination";
remoteObject.source = "MyServices.MyService";
remoteObject.addEventListener("fault", onFault);
remoteObject.getFoo.addEventListener("result", onResult);

我得到以下错误:

faultCode: InvokeFailed
faultString: '[MessagingError]'
faultDetail: 'null'

如果我尝试以这种方式设置频道:

var channelSet:ChannelSet = new ChannelSet();
var amfChannel:AMFChannel = new AMFChannel("my-amf",
    "http://localhost/weborb/weborb.php");
channelSet.addChannel(amfChannel);

var remoteObject = new RemoteObject();
remoteObject.channelSet = channelSet;
remoteObject.destination = "MyServices/MyService";

然后我得到这个错误:

faultCode: Client.Error.MessageSend
faultDetail: Channel.Connect.Failed
url: 'null'

问题:如何正确设置 RemoteObject 以从使用 Flash 编译的 Flash 应用程序连接到 Weborb 远程服务?

这让我发疯了。

4

2 回答 2

2

我正在使用此代码以RemoteObject编程方式进行配置:

var channelSet:ChannelSet = new ChannelSet();
var channel:Channel = new AMFChannel("my-amf", "http://localhost/weborb/weborb.php");
channelSet.addChannel(channel);

var ro:RemoteObject = new RemoteObject("SomeCustomDestination");
ro.source = "Full.Class.Name.With.Namespace";
ro.channelSet = channelSet;

// invoking service
var op:AbstractOperation = ro.getOperation("SomeCustomMethod");
op.addEventListener(ResultEvent.RESULT, onResult);
op.send(params);

SomeCustomDestination定义在WEB-INF/flex/services-config.xml其中服务器需要,但客户端需要识别它才能访问。服务器可能会为您的目的地发布访问策略(安全约束)。

于 2011-06-11T12:08:46.507 回答
0

这是我很久以前的一个帖子。也许这会有所帮助。

于 2009-11-12T15:34:28.970 回答