Flash RemoteObject Weborb соединение без services-config.xml (без Flex)

Контекст: я работаю над приложением Flash, разработанным с использованием FDT и скомпилированным с Flash CS4 (мне нужна огромная библиотека). Он должен подключаться к различным сервисам 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 для подключения к службе удаленного взаимодействия Weborb из приложения Flash, скомпилированного с Flash?

Это сводит меня с ума.

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 который необходим серверу, но клиент должен идентифицировать его для доступа. Сервер может выдавать политику доступа (ограничение безопасности) для вашего пункта назначения.

Это мой пост некоторое время назад. Может быть, это поможет.

Другие вопросы по тегам