使用BlazeDS实现Java和Flex通信(2)---BlazeDS 与Spring集成指南
2009-12-05 23:07
741 查看
1、配置好BlazeDS的开发环境
参考“使用BlazeDS实现Java和Flex通信之hello world ”中的环境搭建过程,配置BlazeDS的开发环境。创建com.yeeach.HelloWorldService,内容如下:
package com.yeeach; public class HelloWorldService { public String hello(String var1) { return "hello " + var1; } public String world(String var1) { return "world " + var1; } }
2、下载Spring BlazeDS Integration 1.0、Spring、jackson包
http://s3.amazonaws.com/dist.springframework.org/release/FLEX/spring-flex-1.0.0.RELEASE-with-dependencies.ziphttp://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-framework-2.5.6.SEC01-with-dependencies.zip
http://jackson.codehaus.org/0.9.4/jackson-asl-0.9.4.jar
放入到flex-spring/WebRoot/WEB-INF/lib
3、修改web.xml,内容如下:
<?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>Spring BlazeDS Integration Samples</display-name> <description>Spring BlazeDS Integration Sample Application</description> <!– Http Flex Session attribute and binding listener support –> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener> <!– The front controller of this Spring Web application, responsible for handling all application requests –> <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> classpath:/applicationContext*.xml classpath*:/applicationContext.xml /WEB-INF/applicationContext*.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!– Map all *.spring requests to the DispatcherServlet for handling –> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/spring/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.htm</welcome-file> </welcome-file-list> </web-app>
4、修改flex/services-config.xml,内容如下
<?xml version="1.0" encoding="UTF-8"?> <services-config> <services> <service-include file-path="remoting-config.xml" /> <service-include file-path="proxy-config.xml" /> <!– Application level default channels. Application level default channels are necessary when a dynamic destination is being used by a service component and no ChannelSet has been defined for the service component. In that case, application level default channels will be used to contact the destination. –> <default-channels> <channel ref="my-amf"/> </default-channels> </services> <channels> <channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/> </channel-definition> <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> <properties> <polling-enabled>false</polling-enabled> </properties> </channel-definition> <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel"> <endpoint url="https://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/> <properties> <add-no-cache-headers>false</add-no-cache-headers> </properties> </channel-definition> <channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/> <properties> <polling-enabled>true</polling-enabled> <polling-interval-seconds>4</polling-interval-seconds> </properties> </channel-definition> <channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel"> <endpoint url="http://{server.name}:{server.port}/{context.root}/spring/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/> </channel-definition> <channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel"> <endpoint url="https://{server.name}:{server.port}/{context.root}/spring/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/> <properties> <add-no-cache-headers>false</add-no-cache-headers> </properties> </channel-definition> </channels> <logging> <!– You may also use flex.messaging.log.ServletLogTarget –> <target class="flex.messaging.log.ConsoleTarget" level="info"> <properties> <prefix>[BlazeDS] </prefix> <includeDate>false</includeDate> <includeTime>false</includeTime> <includeLevel>true</includeLevel> <includeCategory>false</includeCategory> </properties> <filters> <pattern>Endpoint.*</pattern> <pattern>Service.*</pattern> <pattern>Configuration</pattern> </filters> </target> </logging> </services-config>
5、修改flex/remoting-config.xml,内容如下
<?xml version="1.0" encoding="UTF-8"?> <service id="remoting-service" class="flex.messaging.services.RemotingService"> <adapters> <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/> </adapters> <default-channels> <channel ref="my-amf"/> </default-channels> </service>
6、修改applicationContext.xml,增加BlazeDS与Spring集成配置,将Spring的bean导出为flex的Destination
共有三种方法可以将Spring的bean导出为felx的Destination
创建WEB-INF/applicationContext.xml,内容如下:
<beans 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"> <!– Maps request paths at /messagebroker to the BlazeDS MessageBroker –> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <value> /messagebroker/*=_messageBroker </value> </property> </bean> <!– Dispatches requests mapped to a MessageBroker –> <bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/> <!– Bootstraps and exposes the BlazeDS MessageBroker –> <bean id="_messageBroker " class="org.springframework.flex.core.MessageBrokerFactoryBean" /> <!– Expose the productService bean for BlazeDS remoting –> <!– method 1 –> <!– <bean id="test1" class="com.yeeach.HelloWorldService" /> <flex:remoting-destination ref="test1" /> –> <!– method2 –> <!– <bean id="test1" class="com.yeeach.HelloWorldService" > <flex:remoting-destination /> </bean> –> <!– method3 –> <bean id="helloWorldService" class="com.yeeach.HelloWorldService" /> <bean id="test1" class="org.springframework.flex.remoting.RemotingDestinationExporter"> <property name="messageBroker" ref="mySpringManagedMessageBroker"/> <property name="service" ref="helloWorldService"/> </bean> </beans>
7、创建flex-src/helloworld.mxml,内容如下
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:RemoteObject destination="test1" id="test1"> <mx:method name="hello" result="sayHelloResult(event)"/> <mx:method name="world" result="sayWorldResult(event)"/> </mx:RemoteObject> <mx:HBox> <mx:Label text="输入:"/> <mx:TextInput id="inputStr"/> <mx:Button label="say hello" click="sayHello(event);"/> <mx:Button label="say world" click="sayWorld(event);"/> </mx:HBox> <mx:HBox> <mx:Label text="结果:"/> <mx:TextArea id="result"/> </mx:HBox> <mx:Script> <!--[CDATA[ import mx.rpc.events.FaultEvent; import mx.controls.Alert; import mx.rpc.events.ResultEvent; function sayHello(event:Event):void { var inputVar:String=inputStr.text; test1.hello(inputVar); } function sayWorld(event:Event):void { var inputVar:String=inputStr.text; test1.world(inputVar); } private function sayHelloResult(event:ResultEvent):void { result.text=event.result.toString(); Alert.show(event.result.toString(), "返回结果"); } private function sayWorldResult(event:ResultEvent):void { result.text=event.result.toString(); Alert.show(event.result.toString(), "返回结果"); } ]]--> </mx:Script> </mx:Application>
相关文章推荐
- spring集成blazeds,使用@RemoteDestination实现远程服务
- 使用BlazeDS实现Java和Flex通信
- spring集成blazeds,使用@RemoteDestination实现远程服务-悄悄俏俏
- 使用BlazeDS实现Java和Flex通信
- 使用BlazeDS实现Java和Flex通信
- 使用BlazeDS实现Java和Flex通信(1)---HelloWorld
- 使用BlazeDS实现Java和Flex通信
- 使用BlazeDS实现Java和Flex通信
- 使用spring-loaded开源项目,实现java程序和web应用的热部署
- 使用Spring的Quartz方式实现Java定时器功能
- 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
- 使用SPRING中的线程池ThreadPoolTaskExecutor实现JAVA并发
- spring boot 集成kafka (多线程,消费者使用kafka的原生api实现,因为@KakfkaListener修改groupId无效)
- Java注解的使用,实现仿Spring的对象装载
- 使用Spring实现异常统一处理【三】--java.lang.IllegalStateException: STREAM问题的解决
- Java之——Spring与RMI集成实现远程访问(插曲)
- java应用程序实现jetty 集成jersey 和spring
- JAVA中使用代码创建多数据源,并实现动态切换(二)-集成分布式事务
- *jqwidgets jqxgrid 使用心得 jqxgrid教程 jqxgrid+SpringMVC(初级) 集成JAVA SSM
- 【java】spring-data-jpa 集成hibernate实现多条件分页查询