开发者

Flash RemoteObject Weborb connection without services-config.xml (no Flex)

开发者 https://www.devze.com 2022-12-11 19:26 出处:网络
Context : I\'m working on a Flash application developed with FDT and compiled with Flash CS4 (I need a huge library). It should connect to various Weborb services.

Context : I'm working on a Flash application developed with FDT and compiled with Flash CS4 (I need a huge library). It should connect to various Weborb services.

Weborb is properly configured. My services are properly executed, and values returned, via the management console. Weborb examples as well as various tests compiled with Flex are fully functionnal.

Problem : when I try to adapt the code to compile with Flash, and setup开发者_运维百科 the remote object like this :

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

I get the following fault :

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

If I try to setup a channel this way :

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";

I then get this fault :

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

Question: how to properly setup a RemoteObject to connect to a Weborb remoting service from a Flash application compiled with Flash ?

This is driving me nuts.


I am using this code to configure RemoteObject programatically:

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 is defined in WEB-INF/flex/services-config.xml which is needed by the server, but client needs to identify it to access. Server may issue access policy (security constraint) for your destination.


This a post of mine from a while ago. Maybe this will help.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号