Я хочу использовать каркас Parsley и GraniteDS для удаленного взаимодействия. Начиная с 2.1, GraniteDS генерирует классы обслуживания AS3 из вашего кода Java в качестве локальных прокси, и я хочу использовать эти классы в Parsley.
Я могу успешно добавить классы обслуживания с помощью Parsley, но когда я вызываю любой из их методов, я получаю ошибку нулевого объекта
at org.granite.tide::Component/http://www.adobe.com/2006/actionscript/flash/proxy::callProperty()[C:\workspace_\graniteds\as3\framework\org\granite\tide\Component.as:172]
at library::BookServiceBase/get()[C:\Documents and Settings\MedLineTec\Adobe Flash Builder 4\library\src\library\BookServiceBase.as:36]
Это может быть связано с тем, что Parsley создает экземпляры классов обслуживания, фактически не внедряя их в соответствующий «контекст» для удаленного взаимодействия с GraniteDS. Мне нужно выяснить, как дать контекст GraniteDS сервисным классам, которые создает экземпляр петрушки. Я видел сообщение на форумах про петрушку , где кто-то рекомендовал:
<parsley:ContextBuilder>
<parsley:FlexConfig type="{UserManagerConfig}"/>
<parsley:RuntimeConfig instances="{[tideContext]}" />
</parsley:ContextBuilder>
...
[Bindable]
private var tideContext:Context = Spring.getInstance().getSpringContext();
Но это не сработало для меня. Я знаком с GraniteDS, но не с Parsley, так что, возможно, это решение, но правильно его применить - у меня над головой.
Если у кого-то есть это с другой средой, такой как Swiz или Spring ActionScript, пожалуйста, передайте это решение, так как оно может быть очень похожим.
UPDATE:
Я выяснил, прочитав исходный код Granite, что после запуска службы с Parsley (например, bookService), если я запускаю
private var tideContext:Context = Spring.getInstance().getSpringContext();
bookService.meta_init("bookService", tideContext);
Тогда я смогу успешно воспользоваться услугой. Так что, думаю, мне просто нужно знать, как это сделать как-то автоматически, со всеми услугами, которые я объявляю в Parsley.