基于blazeDS的flex4与spring的程序实例步骤
2013-04-18 14:54
393 查看
环境: jdk1.6 j2ee1.5 spring2.5.6 blazeDS3.3 tomcat6.0 flex4 myeclipse8.5 flashBuilder4 步骤: 一、 启动好blazeDS(即启动tomcat,在[tomcat]/webapps目录下产生一个blazeds文件夹(三个war包产生一个blazeds文件夹)); 在myeclipse8.5新建一个web Project工程,工程名为webSpring; 把此工程加入blazeDS支持(即用blazeds下的WEB-INF文件夹替换掉web工程下的WEB-INF文件夹); 加入spring支持(把spring相关的jar包拷贝到webSpring/WebRoot/WEB-INF/lib目录下即可)。 二、 1. 在javaWeb工程webSpring的str目录下分别新建一下两个包: cn.xuediit.myFactory、cn.xuediit.myService; 2. 在cn.xuediit.myFctory包下新建两个类:FlexFactoryImpl.java和SpringFactoryInstance.java FlexFactoryImpl.java:
package cn.xuediit.myFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import flex.messaging.FactoryInstance; import flex.messaging.FlexFactory; import flex.messaging.config.ConfigMap; public class FlexFactoryImpl implements FlexFactory { private Log log = LogFactory.getLog(getClass()); /*override interface method*/ public void initialize(String id, ConfigMap configMap) { System.out.println("1---flex工厂实现类重写的方法initialize"); } /*override interface method*/ public FactoryInstance createFactoryInstance(String id, ConfigMap properties) { System.out.println("2---flex工厂实现类重写的方法createFactoryInstance"); log.info("Create FactoryInstance."); SpringFactoryInstance instance = new SpringFactoryInstance(this, id, properties); instance.setSource(properties.getPropertyAsString(SOURCE, instance.getId())); return instance; } /*override interface method*/ public Object lookup(FactoryInstance instanceInfo) { System.out.println("4---flex工厂实现类重写的方法lookup"); log.info("Lookup service object."); return instanceInfo.lookup(); } }
SpringFactoryInstance.java
package cn.xuediit.myFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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.FlexContext; import flex.messaging.FlexFactory; import flex.messaging.config.ConfigMap; import flex.messaging.services.ServiceException; public class SpringFactoryInstance extends FactoryInstance { private Log log = LogFactory.getLog(getClass()); SpringFactoryInstance(FlexFactory factory, String id, ConfigMap properties) { super(factory, id, properties); } public Object lookup() { System.out.println("3---spring工厂类的方法lookup"); ApplicationContext appContext = WebApplicationContextUtils.getRequiredWebApplicationContext(FlexContext.getServletConfig().getServletContext()); String beanName = getSource(); try { log.info("Lookup bean from Spring ApplicationContext: " + beanName); return appContext.getBean(beanName); } catch (NoSuchBeanDefinitionException nex) { ServiceException e = new ServiceException(); String msg = "Spring service named '" + beanName + "' does not exist."; e.setMessage(msg); e.setRootCause(nex); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } catch (BeansException bex) { ServiceException e = new ServiceException(); String msg = "Unable to create Spring service named '" + beanName + "'."; e.setMessage(msg); e.setRootCause(bex); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } catch (Exception ex) { ServiceException e = new ServiceException(); String msg = "Unexpected exception when trying to create Spring service named '" + beanName + "'."; e.setMessage(msg); e.setRootCause(ex); e.setDetails(msg); e.setCode("Server.Processing"); throw e; } } }
3. 在cn.xuediit.myService包下新建两个类:FService.java和FServicesImpl.java (1). FService.java
package cn.xuediit.myService; public interface FService { public String sayHello(String name); }
(2). FServicesImpl.java
package cn.xuediit.myService; public class FServicesImpl implements FService { public String sayHello(String name) { System.out.println("5---服务层实现类(本质上的与flex交互的类)"); return "我是服务层的服务实现类==" + name; } }
三、 1、 在javaWeb工程webSpring下,在文件webSpring/WebRoot/WEB-INF/web.xml的<web-app>标签下添加子节点:
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
2、 在javaWeb工程webSpring下,在webSpring/WebRoot/WEB-INF目录下新建一个文件:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="fServiceImplBeanID" class="cn.xuediit.myService.FServicesImpl"></bean> </beans>
四、 1、 在javaWeb工程webSpring下,在WebRoot/WEB-INF/flex/remoting-config.xml文件中的<service>标签下添加:
<destination id="destinationID"> <properties> <factory>flexFactoryImplID</factory> <source>fServiceImplBeanID</source> <scope>application</scope> </properties> </destination>
2、 在javaWeb工程webSpring下,在WebRoot/WEB-INF/flex/services-config.xml文件中的<services-config>标签下添加:
<factories> <factory id="flexFactoryImplID" class="cn.xuediit.myFactory.FlexFactoryImpl"/> </factories>
五、 给此javaWeb工程添加tomcat支持,启动tomcat(这个容易就不说了)。六、 在flashBuilder下新建一个基于blazeDS的flex项目(以webSpring为后台工程),工程名为webFb;
webFb.mxml:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="500" minHeight="200"> <fx:Script> <![CDATA[ import mx.core.Application; import mx.rpc.events.FaultEvent; import mx.collections.ArrayCollection; import mx.rpc.remoting.mxml.RemoteObject; import mx.controls.Alert; import mx.rpc.events.ResultEvent; public function submit(name:String):void{ var remote:RemoteObject = new RemoteObject(); remote.destination = "destinationID"; remote.endpoint = "http://localhost:8080/webSpring/messagebroker/amf"; remote.addEventListener(ResultEvent.RESULT, myResult); remote.addEventListener(FaultEvent.FAULT,fault); remote.sayHello(name); } private function myResult(evt:ResultEvent):void{ Alert.show(evt.result.toString()); } private function fault(evt:FaultEvent):void{ Alert.show(evt.fault.message); } ]]> </fx:Script> <s:Button x="240" y="11" label="要发送到" click="submit(nameTxt.text)"/> <s:Label x="16" y="11" text="姓名"/> <s:TextInput id="nameTxt" x="100" y="100"/> </s:Application>
转自:http://zhidao.baidu.com/question/378329977.html
相关文章推荐
- 基于innobakcupex跨实例不完全恢复步骤
- 基于Maven的ActiveMQ+spring 多消息队列配置实例
- Spring基于注解的缓存配置--web应用实例
- 基于OSGi的Virgo Server最简单Spring web实例
- ssh框架搭建Struts2.06+spring2.5+hibernate3.2整合实例代码教程步骤
- 基于SpringMVC+freemarker实例
- Flex4系列教程之七 – 整合Flex,BlazeDS,Spring(>= 2.5.6)
- ACE框架简介以及一个基于ACE的C/S服务程序实例
- 本文实现了一个基于servlet技术的简单的csv文件导出的程序实例。
- Spring 拦截器使用- 基于微信企业号安全HandlerInterceptor实例
- 基于stm32的usb iap程序升级步骤
- Struts与Spring整合后程序运行的步骤
- 基于json-lib.jar包Json实例程序
- Spring基于事件驱动模型的订阅发布模式代码实例详解
- flex4 + spring + blazeds , 使用anonation(注解)机制,利用push技术的实现例子和过程。
- 基于spring事务简单实例
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- [C语言] 基于Linux的一对一Socket简易聊天程序实例
- 部署Bookinfo示例程序详细过程和步骤(基于Kubernetes集群+Istio v1.0)
- Restlet - 基于Spring的Restlet开发实例