学习flex 初步实现与java进行数据交互

      本人是从事BS架构应用开发的,现在发现客户越来越关注用户的互动体验,视觉上的冲击 界面与提示友好 portlet 百花齐放
   基于各方面原因,现在开始关注flex技术.没说的最终还是要与实际应用结合来使用的.如何让flex开发的.swf与java进行数据交互?了解到flex是用amf与java进行数据交互的,按照网上搜出来的相关文档进行配置

   首先下载BlazeDS包 解压后

   

将lib下的jar包copy到自己建立好的web应用的lib下,将flex文件夹直接copy到/WEB-INF下(包括4个xml文件),在web.xml里加入 MessageBrokerServlet MessageBrokerServlet flex.messaging.MessageBrokerServlet contextConfigLocation /WEB-INF/flex/services-config.xml 1 struts2 /sevlet/* MessageBrokerServlet /messagebroker/*

注意 由于我用的是struts2+spring2.5+Hibernate3.3 开始由于在配置struts2的/*使我的/messagebroker/*请求总接收不到 郁闷了好半天 最后将应用中所有的请求加了一级路径 才分开

配置好后访问http://{server.name}:{server.port}/{context.root}/messagebroker/amf如果能够访问 那么应用一级就配置好了

 

下面开始用flex开发功能点吧.

 

注意 这里要与 remoting-config.xml中的id 对应

ro spring

 

如果你不是使用spring 那么就将标签去掉 在中写类的全路径 如果用spring进行管理的话 要在service-config.xml中

加入

 

中间的实现类可以自己写

 

代码如下

 

package com.chinasofti.comm.utils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import flex.messaging.FactoryInstance; import flex.messaging.FlexFactory; import flex.messaging.config.ConfigMap; import flex.messaging.services.ServiceException; public class SpringFactory implements FlexFactory { private static final String SOURCE = "source"; /** * This method can be used to initialize the factory itself. It is called * with configuration parameters from the factory tag which defines the id * of the factory. */ public void initialize(String id, ConfigMap configMap) { } /** * This method is called when we initialize the definition of an instance * which will be looked up by this factory. It should validate that the * properties supplied are valid to define an instance. Any valid properties * used for this configuration must be accessed to avoid warnings about * unused configuration elements. If your factory is only used for * application scoped components, this method can simply return a factory * instance which delegates the creation of the component to the * FactoryInstance's lookup method. */ public FactoryInstance createFactoryInstance(String id, ConfigMap properties) { SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties); instance.setSource(properties.getPropertyAsString(SOURCE, instance .getId())); return instance; } // end method createFactoryInstance() /** * Returns the instance specified by the source and properties arguments. * For the factory, this may mean constructing a new instance, optionally * registering it in some other name space such as the session or JNDI, and * then returning it or it may mean creating a new instance and returning * it. This method is called for each request to operate on the given item * by the system so it should be relatively efficient. *

* If your factory does not support the scope property, it report an error * if scope is supplied in the properties for this instance. *

*/ public Object lookup(FactoryInstance inst) { SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst; return factoryInstance.lookup(); } static class SpringFactoryInstance extends FactoryInstance { SpringFactoryInstance(SpringFactory factory, String id, ConfigMap properties) { super(factory, id, properties); } public String toString() { return "SpringFactory instance for id=" + getId() + " source=" + getSource() + " scope=" + getScope(); } public Object lookup() { ApplicationContext appContext = WebApplicationContextUtils .getWebApplicationContext(flex.messaging.FlexContext .getServletConfig().getServletContext()); String beanName = getSource(); try { return appContext.getBean(beanName); } catch (NoSuchBeanDefinitionException nexc) { ServiceException e = new ServiceException(); String msg = "Spring service named '" + beanName + "' does not exist."; e.setMessage(msg); e.setRootCause(nexc); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } catch (BeansException bexc) { ServiceException e = new ServiceException(); String msg = "Unable to create Spring service named '" + beanName + "' "; e.setMessage(msg); e.setRootCause(bexc); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } } } }

好了 以上就是flex与java的应用整合的实例

关注点在是否能访问http://{server.name}:{server.port}/{context.root}/messagebroker/amf

呵呵 也就是你的swf是否能与java通讯

你可能感兴趣的:(Flex,flex,java,properties,datagrid,string,spring)