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