blazeds与spring的结合使用
2009-10-11 21:23
309 查看
一直看好spring opensource,如何更好地将blazeds与spring完美结合起来是其目标之一。spring的两大特点分别是依赖注入和切面编程,使用spring框架对于代码污染非常少,鬼知道当初rod johnson怎么搞出来这么一套厉害的东西!拉扯远了,进入正题。
1.什么是spring blazeds integration?
懒得翻译了,自己看吧。
Spring has always aimed to be agnostic to the client technologies being used to access its core services, intentionally leaving options open and letting the community drive the demand for any new first-class integration solutions to be added to the Spring project portfolio. Spring BlazeDS Integration is an answer to the commmunity demand for a top-level solution for building Spring-powered Rich Internet Applications using Adobe Flex for the client-side technology.
BlazeDS is an open source project from Adobe that provides the remoting and messaging foundation for connecting a Flex-based front-end to Java back-end services. Though it has previously been possible to use BlazeDS to connect to Spring-managed services, it has not been in a way that feels "natural" to a Spring developer, requiring the extra burden of having to maintain a separate BlazeDS xml configuration. Spring BlazeDS Integration turns the tables by making the BlazeDS MessageBroker a Spring-managed object, opening up the pathways to a more extensive integration that follows "the Spring way".
2.系统需求。
Java 5 以上
Spring 2.5.6 以上
Adobe BlazeDS 3.2 以上
3.服务端开发。
在服务器端的开发主要涉及了web.xml和applicationContext的配置。
其中web.xml配置如下:定义了spring的分发servlet和其映射的表达式。
在spring的配置的文件当中,我们需要在头部加上flex的命名空间等:
1.什么是spring blazeds integration?
懒得翻译了,自己看吧。
Spring has always aimed to be agnostic to the client technologies being used to access its core services, intentionally leaving options open and letting the community drive the demand for any new first-class integration solutions to be added to the Spring project portfolio. Spring BlazeDS Integration is an answer to the commmunity demand for a top-level solution for building Spring-powered Rich Internet Applications using Adobe Flex for the client-side technology.
BlazeDS is an open source project from Adobe that provides the remoting and messaging foundation for connecting a Flex-based front-end to Java back-end services. Though it has previously been possible to use BlazeDS to connect to Spring-managed services, it has not been in a way that feels "natural" to a Spring developer, requiring the extra burden of having to maintain a separate BlazeDS xml configuration. Spring BlazeDS Integration turns the tables by making the BlazeDS MessageBroker a Spring-managed object, opening up the pathways to a more extensive integration that follows "the Spring way".
2.系统需求。
Java 5 以上
Spring 2.5.6 以上
Adobe BlazeDS 3.2 以上
3.服务端开发。
在服务器端的开发主要涉及了web.xml和applicationContext的配置。
其中web.xml配置如下:定义了spring的分发servlet和其映射的表达式。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>BlazeDS</display-name> <description>BlazeDS Application</description> <!-- MessageBroker Servlet --> <servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>springblazeds.html</welcome-file> </welcome-file-list> <login-config> <auth-method>BASIC</auth-method> </login-config> <!-- for WebSphere deployment, please uncomment <resource-ref> <description>Flex Messaging WorkManager</description> <res-ref-name>wm/MessagingWorkManager</res-ref-name> <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> --> </web-app>
在spring的配置的文件当中,我们需要在头部加上flex的命名空间等:
xmlns="http://www.springframework.org/schema/beans" xmlns:flex="http://www.springframework.org/schema/flex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"[/code]
接着我们必须定义一个MessageBroker的工厂类和指出service-config.xml的路径。<bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean"> <property name="servicesConfigPath" value="/WEB-INF/flex/services-config.xml" /> </bean>
如何定义一个映射请求的urlhandler类:<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <value>/*=_messageBroker</value> </property> </bean>
再定义一个分发请求的类:<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter" />
最后,将我们的服务给暴露出来:<bean id="productService" class="ProductService"> </bean> <bean id="product" class="org.springframework.flex.remoting.RemotingDestinationExporter"> <property name="messageBroker" ref="_messageBroker"></property> <property name="service" ref="productService"></property> <property name="channels" value="my-amf"></property> </bean>
至此服务端开发完毕。
4.客户端开发。
客户端的开发就显得比较简单了:<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <!--[CDATA[ import mx.messaging.ChannelSet; import mx.messaging.channels.AMFChannel; import mx.messaging.Channel; import mx.controls.Alert; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.rpc.remoting.RemoteObject; private var productService:RemoteObject; private var _productModel:ProductModel; private var productChannel:Channel; private function init():void{ _productModel=new ProductModel(); productService=new RemoteObject(); if(!productChannel){ productChannel=new AMFChannel("my-amf","http://localhost:8080/springblazeds/messagebroker/amf"); var channelSet:ChannelSet=new ChannelSet(); channelSet.addChannel(productChannel); productService.channelSet=channelSet; productService.destination="product"; } } private function getProduct(e:MouseEvent):void{ productService.getProduct(); productService.addEventListener(FaultEvent.FAULT,getProductFaultHandler); productService.addEventListener(ResultEvent.RESULT,getProductResultHandler); } private function getProductFaultHandler(e:FaultEvent):void{ Alert.show(e.fault.toString()); } private function getProductResultHandler(e:ResultEvent):void{ _productModel=e.result as ProductModel; Alert.show(_productModel.productId+" "+_productModel.productName+" "+_productModel.productDetail); } ]]--> </mx:Script> <mx:Form verticalCenter="0" horizontalCenter="0" width="400" height="400"> <mx:Button label="Button" click="getProduct(event)"/> </mx:Form> </mx:Application>
这样配置好客户端和服务端便可以调用开发了,是不是很简单呢?有需要的朋友不妨向我索要代码。
相关文章推荐
- spring与rmi结合使用
- 使用spring aop结合log4j做日志
- jasypt与Spring结合使用说明
- Redis整合Spring结合使用缓存实例
- Redis整合Spring结合使用缓存实例
- Log4j结合spring的使用配置
- logback与Spring、SpringMVC结合使用教程
- 定时器quartz结合spring使用(方法二MethodInvokingJobDetailFactoryBean)
- 使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)
- spring结合 atomikos 使用
- spring hprose结合使用说明
- logback与Spring、SpringMVC结合使用教程
- 使用 Spring data redis 结合 Spring cache 缓存数据配置
- 定时器quartz结合spring使用(方法一JobDetailBean)
- struts,hibernate , spring结合使用
- Spring与Junit结合使用
- Spring与Junit结合使用的代码
- 使用Spring BlazeDS Integration进行数据推送服务(push data)
- Redis整合Spring结合使用缓存实例
- Redis整合Spring结合使用缓存实例