Подключение 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?

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


person user105813    schedule 12.11.2009    source источник


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

person mizi_sk    schedule 11.06.2011

Это сообщение моего из недавнего времени. Может это поможет.

person Lieven Cardoen    schedule 12.11.2009