flex4 + spring + blazeds , 使用anonation(注解)机制,利用push技术的实现例子和过程。
来源:互联网 发布:java switch if 效率 编辑:程序博客网 时间:2024/05/17 02:46
实现目标:java做后台service,每隔300毫秒,生成一个uuid,以 testJob做为订阅关键词,发布给所有订阅此关键词的flex客户端。
配置过程和源码:
1.修改blazeds自动生成的WEB-INF/flex/services-config.xml文件。由于原来没有polling-amf的定义,所以需要加入。代码如下:
2.在spring的配置文件中定义 defaultMessageTemplate class="org.springframework.flex.messaging.MessageTemplate"
之所以要定义这个bean,是为了在做service的时候。可以用注解@Autowired来引入这个MessageTemplate的实例。
3.在web.xml中定义spring和flex的集成。这个配置是使用spring和flex集成时候的配置,和push技术无关。
4.由于web.xml配置中引入了WEB-INF/classes/META-INF/springFlex.xml这个文件,所以在springFlex.xml文件中进行详细配置
5.springFlex.xml文件如下,主要是定义flex:message-destination ,既是监听的数据的关键词
6.编写后台推送的java service bean:
注意:这里使用了@Service,@@RemotingDestination 注解和@Autowired MessageTemplate template; 这样就避免了在spring中利用配置文件进行定义bean。
如果要使用spring 配置文件来定义。可以参考下面代码(来自blazeds的官方例子中的spring配置文件)
具体的业务实现是在 内联线程类FeedThread 里面的run()中实现。
这要做的目标是为了让这个线程启动,是一定要通过flex的一个客户端连上来,才能启动。而不能随着spring context启动而启动。否则会报告messageBroke没有设置在flexContext之类的错误。
那么:如果我们想后台在没有任何一个客户端连上来的情况下,也要启动这个发送服务应该如何做?
典型场景: 后台web应用启动,并且定义了一个定时器。每隔 5s 进行一个逻辑处理,然后把处理结果发送给前台 flex(无论是否有felx客户端连上)
这就需要用下面代码:
这个work2 方法可以通过 quartz或者spring 的@Scheduled注解来进行定时器调用。
主要的关键代码是
MessageBroker msgBroker = MessageBroker.getMessageBroker("_messageBroker");
这个就是获得一个 _messageBroker的实例。"_messageBroker"字符串是由 <flex:message-broker > 标签中的id来指定。
如果没有id 指定,则缺省使用 “"_messageBroker"”这个字符串
7.前台的订阅flex程序:
其中关键代码是:
注意:
<s:StreamingAMFChannel uri="/Aerie/messagebroker/streamingamf"/>
<s:AMFChannel uri="/Aerie/messagebroker/amflongpolling"/>
<s:AMFChannel uri="/Aerie/messagebroker/amfpolling"/>
这三个通道的设置中用到的
Aerie是代表context名字。
messagebroker 是代码 web.xml中的配置的MessagebrokerServlet中的url-pattern
amfpolling 等是指 在services-config.xml文件中设置的 channel-definition 下的endpoint 名字
- flex4 + spring + blazeds , 使用anonation(注解)机制,利用push技术的实现例子和过程。
- flex4 + spring + blazeds , 使用anonation(注解)机制,利用push技术的实现例子和过程。
- Flex4+BlazeDS+Spring+Hibernate 整合
- 基于blazeDS的flex4与spring的程序实例步骤
- 一个使用Flex和BlazeDS实现协作式数据输入的例子
- 使用BlazeDS实现Java和Flex通信(2)---BlazeDS 与Spring集成指南
- 使用Spring BlazeDS Integration进行数据推送服务(push data)
- 使用Spring BlazeDS Integration进行数据推送服务(push data)
- Spring 利用springIOC和DI实现MVC的模拟例子
- 用myEclipse8.5 + flex4 + Spring BlazeDS Integration + Blaze + Gilead整合过程
- 用myEclipse8.5 + flex4 + Spring BlazeDS Integration + Blaze + Gilead整合过程
- Flex4 blazeds Spring JAVA 进行交互
- Flex4+BlazeDS+Spring+Hibernate 整合(附源码)
- spring使用注解的简单例子
- spring aop注解使用的例子
- Spring的@PropertySource和@Value注解例子
- Spring的@PropertySource和@Value注解例子
- Spring的@PropertySource和@Value注解例子
- [openstack swift]install multi node
- [openstack swift]0 swift介绍
- web项目笔记
- makefile的四种赋值
- ASP.NET的页面中对其他文件的引用
- flex4 + spring + blazeds , 使用anonation(注解)机制,利用push技术的实现例子和过程。
- asp.net中的include
- 最简单的ajax例子
- Java 三大框架——SSH框架应用简介
- 使用native方法扩展Java程序的功能详解
- 冯·诺伊曼结构和哈佛结构
- ARM946es
- SQL--Cascading delete and update (Referential Integrity)
- C++的static关键字