PDA

Просмотр полной версии : правильное использование remoteObject


darkbishop
27.05.2010, 15:41
Доброго всем времени суток, помогите побороть: есть много запросов и по глупости своей я для каждого запроса к базе использовал новый remoteObject, в итоге код нечитабельный, решил написать универсальный remoteObject, но на этапе remoteObject.getOperation("findAll()").send( ); вываливается экзипшен с тем,что он не может найти такую службу, хотя remoteObject.findAll(); проходит и выводит все что надо, в чем ошибка
и ещё вопрос в чем разница между использованием
remoteObject..getOperation(operationName).send( ); и использованием remoteObject.findAll();
заранее спасибо.

GrMerlin
29.05.2010, 19:45
А какой фреймворк используешь? Если AMFPHP, то:

<mx:RemoteObject id="myservice" source="название_папки_с_сервисами_в_AMFPHP.файл_с_функциями" destination="amfphp">
<mx:method name="имя_функции_на_сервере(в_пхп_файле)1" result="" fault=""/>
<mx:method name="имя_функции_на_сервере(в_пхп_файле)2" result="" fault=""/>
</mx:RemoteObject>

Таким образом используешь один remoteObject, но описываешь в нем сколь нужно методов. Каждый метод соответствует функции в "название_папки_с_сервисами_в_AMFPHP.файл_с_функциями"
А вообще почитай это (http://habrahabr.ru/blogs/php/51072/) или вот это (http://garbage-collector.ru/2007/03/flex_remoteobject_n_amfphp.html). Надеюсь хоть немного помог.

darkbishop
31.05.2010, 13:03
использую java+spring, мне б чтоб не надо было хардкодить типа method name, а чтоб гибко было, что то вроде функции с параметрами: название вызываемой функции и т.д.
p.s. или может у кого есть ссылочка на пример реализации универсального remoteObject, заранее спасибо

Dimitry_II
31.05.2010, 14:00
Странное, в принципе желание, но "хардкордить" все же прийдется ...
Надо просто обрабатывать содержимое метода в фаблике, которая предоставляет данные для клиента (BlazeDS или другого). Просто описывать содержимое Spring-конфига application-config.xml не хочется, но если ты проследишь весь путь при получении данных при remoteObject.findAll(), то есть найдешь, где и как (извини, если ты все знаешь) он обрабатывается и что выдает, то для тебя не будет проблемой обработать remoteObject.getOperation("findAll()"). Правда, обратная сторона кажущегося тебе более удобным способа - возвращаемые данные для одной функции ВСЕГДА будут одного типа - наверняка List<YourObject>.

Если нужна помощь в традиционных настройках, то можно посмотреть по ссылкам:
Вот тут (http://gubber.ru/Svjazyvaem-Java-i-Flex-v-Air-ispolghzuja-BlazeDs-cherez-Spring.html) есть похожее - Flex -> BlazeDS + Spring + Java, и на том же ресурсе еще статья (http://gubber.ru/Svjazyvaem-FlexAir-i-Bazu-dannyh-ispolghzuja-RemoteObject-BlazeDS-Spring-i-Hibernate.html).

darkbishop
31.05.2010, 16:17
спасибо за информацию