Прежде всего вы должны внедрить FlexFactory на своем собственном заводе:
http://livedocs.adobe.com/blazeds/1/blazeds_devguide/factory_2.html
Я немного изменил SpringFactory, чтобы вы могли получить доступ к текущему экземпляру данного компонента:
public class BeanFactory implements FlexFactory {
private static final String SOURCE = "source";
public void initialize(String id, ConfigMap configMap) {}
public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {
BeanFactoryInstance instance = new BeanFactoryInstance(this, id, properties);
instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId()));
return instance;
}
public Object lookup(FactoryInstance inst) {
BeanFactoryInstance factoryInstance = (BeanFactoryInstance) inst;
return factoryInstance.lookup();
}
static class BeanFactoryInstance extends FactoryInstance {
BeanFactoryInstance(BeanFactory factory, String id, ConfigMap properties) {
super(factory, id, properties);
}
public String toString() {
return "BeanFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope();
}
public Object lookup() {
HttpServletRequest hsr = FlexContext.getHttpRequest();
String beanName = getSource();
try
{
Object o = hsr.getSession().getAttribute(beanName);
return o;
}
catch (Exception e)
{
ServiceException se = new ServiceException();
String msg = "Java Bean '" + beanName + "' does not exist.";
se.setMessage(msg);
se.setRootCause(e);
se.setDetails(msg);
se.setCode("Server.Processing");
throw se;
}
}
}}
в файле service-config.xml (папка WEB-INF / flex) вы должны зарегистрировать эту фабрику:
<factories>
<factory id="beanFactory" class="packageName.BeanFactory"/>
</factories>
тогда вам нужно зарегистрировать фабрику в пункте назначения в remoting-config.xml следующим образом:
<destination id="remoteService">
<properties>
<factory>beanFactory</factory>
<source>beanName</source>
<scope>session</scope>
</properties>
</destination>
так что же делает этот BeanFactory:
когда вы хотите получить доступ к удаленному устройству от flex до java или к jee-приложению, вы объявляете удаленный объект на flex с целевым объектом «remoteService», который настроен в remoting-config.xml. в тот момент, когда вы обращаетесь от flex к java путем вызова серверного метода, beanfactory заботится о текущем экземпляре bean-компонента, который вы объявляете в remoting-config.xml, получая запрос через FlexContext:
HttpServletRequest hsr = FlexContext.getHttpRequest ();
теперь вы получаете сеанс и с beanName экземпляра, вызывая
hsr.getSession (). getAttribute (beanName)
это работает только с прикладными и сессионными компонентами и только в том случае, если jsf создал экземпляр компонента до того, как BeanFactory захочет получить доступ к компоненту ...
если вы хотите интегрировать SWF-файл с IceFfaces, вы должны взять лед: outputMedia-Tag установить атрибут проигрывателя на «flash»
если вы работаете с eclipse для разработки своего jee-приложения и интегрируете tomcat в eclipse, вы можете установить корневую папку сервера в свойствах вашего flex-проекта в папку tomcat (flex builder):
(Извините, не время для того, чтобы это выглядело хорошо;))
Теперь вы можете запустить сервер Tomcat непосредственно в Eclipse, а также отладить на Flex и Java:)
надеюсь, это поможет!