messaging-config.xml 文件
<destination id="simple-feed">
<properties>
<server>
<allow-subtopics>true</allow-subtopics>
<subtopic-separator>.</subtopic-separator>
</server>
</properties>
</destination>
applicationContext.xml 文件
<flex:message-broker>
<flex:message-service
default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
</flex:message-broker>
<!-- MessageTemplate makes it easy to publish messages -->
<bean id="defaultMessageTemplate" class="org.springframework.flex.messaging.MessageTemplate" />
<bean id="simpleFeedStarter" class="com.team.gis.service.SimpleFeed">
<constructor-arg ref="defaultMessageTemplate" />
<flex:remoting-destination />
<property name="stationMapper" ref="stationMapper" />
</bean>
flex 文件:
<mx:ChannelSet id="cs">
<mx:AMFChannel url="http://localhost:8080/pipe/messagebroker/amflongpolling"/>
<mx:AMFChannel url="http://localhost:8080/pipe/messagebroker/amfpolling"/>
</mx:ChannelSet>
<mx:Consumer id="consumer" destination="simple-feed" channelSet="{cs}"
message="messageHandler(event.message)"/>
as文件:
consumer.subscribe();
private function messageHandler(message:IMessage):void
{
var siteInfo:ArrayCollection = message.body as ArrayCollection;
var sites:ArrayCollection = siteInfo.getItemAt(0) as ArrayCollection;
/**清空图层数据*/
var keySets :Array = GlobeConfig.getInstance().graphicsLayerHashTable.getKeySet();
for(var k:int =0 ; k < keySets.length ; k++){
var templayer:GraphicsLayer = GlobeConfig.getInstance().graphicsLayerHashTable..find(keySets[k]);
templayer.clear();
}
GlobeConfig.getInstance().graphicHashTable.clear();
for(var a :int = 0 ; a<sites.length ; a++){
var gisLocation:GisLocation = sites.getItemAt(a) as GisLocation;
var g:Graphic = new Graphic();
g.geometry = new MapPoint(Number(gisLocation.x),Number(gisLocation.y));
g.symbol = new MonitorSymbol(gisLocation.alias,gisLocation.symbol,gisLocation.items);
g.attributes = gisLocation;
g.toolTip = gisLocation.alias;
g.addEventListener(MouseEvent.CLICK,graphicClickHandler);
var layerHashTable:HashTable = GlobeConfig.getInstance().graphicsLayerHashTable;
var layer:GraphicsLayer = layerHashTable.find(gisLocation.layerid);
if(gisLocation == null){
continue;
}
if(layer != null){
layer.add(g);
GlobeConfig.getInstance().graphicHashTable.add(gisLocation.id,g);
}
}
AppEventDispatcher.getInstance().dispatchEvent(new AppEvent(ArcgisEventConst.REFRESH_GIS_LOCATION_EVENT));
}
java代码:
package com.team.gis.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.flex.messaging.MessageTemplate;
import com.team.gis.domain.GisLocation;
import com.team.gis.domain.MonitorItem;
import com.team.gis.persistence.StationMapper;
public class SimpleFeed {
private final MessageTemplate template;
private StationMapper stationMapper;
public SimpleFeed(MessageTemplate template) {
this.template = template;
}
public void pushSiteInfo(){
List<GisLocation> locations = stationMapper.searchGisLocation();
List<MonitorItem> items = stationMapper.searchMonitorItems();
List<MonitorItem> aitems = null;
for(GisLocation gisLocation : locations){
if(gisLocation.getMonitor() != null){
String[] ms = gisLocation.getMonitor().split(",");
aitems = new ArrayList<MonitorItem>();
for(MonitorItem m : items){
for(String mi : ms){
if(m.getId() == Integer.valueOf(mi)){
m.setAvailable(true);
aitems.add(m);
}
}
}
gisLocation.setItems(aitems);
}
}
List<List<?>> siteInfo = new ArrayList<List<?>>();
siteInfo.add(locations);
siteInfo.add(items);
template.send("simple-feed",siteInfo);
}
public StationMapper getStationMapper() {
return stationMapper;
}
public void setStationMapper(StationMapper stationMapper) {
this.stationMapper = stationMapper;
}
}
分享到:
相关推荐
Flex与Java的消息推送技术主要涉及的是前端Flex应用与后端Java服务器之间的实时数据交互。在Web应用程序中,传统的HTTP协议是基于请求-响应模型的,客户端(浏览器)发起请求,服务器响应,然后连接关闭。然而,对于...
源代码实现功能: 1. 实现了Flex与Java后台...2. 实现了Flex的消息推送技术,实现服务器端消息的发布以及多客户端消息的订阅。 3. 实现Java端动态创建Destination提供给Flex调用。 4. 适用于动态热部署项目需求的应用。
Flex中的消息推送机制是基于Producer和Consumer模型实现的,这种机制允许应用程序实时地发送和接收消息,常用于构建聊天室、通知系统等实时交互的应用。下面将详细解释Flex消息推送的相关知识点。 1. **Producer与...
flex数据推送. 与后台服务器的端 基于java as
有关于flex推送技术的工程例子,使用blazeds的StreamingAMFChannel 通道实现推送功能。(使用前先启动http://localhost:8080/flex-blazeds/TickCacheServlet?cmd=start)
Flex + blazeds + Java推送Demo 本例实现由Flex一端客户端发送消息, 然后由Java端在发布到所有订阅的其它Flex端. 里面有说明与源码, 还有一个直接放到Tomcat里面的直接发布的项目 小编使用工具 eclipse3.5 flex sdk...
本话题聚焦于基于FLEX和MINA的消息推送核心技术,这两种技术在构建高效、可靠的网络通信系统中发挥着重要作用。 FLEX是一种开源的富互联网应用程序(Rich Internet Application,RIA)开发框架,主要由Adobe公司...
标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...
- 可扩展性:设计可扩展的架构,以适应高并发和大数据量的推送需求,如使用消息队列(Message Queue)进行缓冲和分发。 综上所述,Flex数据推送技术通过Polling或Push策略实现了客户端与服务器之间的实时数据交换,...
1. **消息通道定义**:定义了服务器上用于推送消息的通道,这可能是通过Spring配置文件完成的。 2. **Flex客户端代码**:在Flex应用程序中,我们需要创建一个MessageBroker对象,然后订阅感兴趣的消息频道。这通常...
在"BlazeDS实现java后台消息推送flex前台接收的例子"中,我们主要关注以下几个关键知识点: 1. **BlazeDS架构**:BlazeDS包含了一组服务,如Remoting服务、LiveCycle Data Services(LCDS)以及MessageBroker服务。...
2. **Flex推送技术实现** - **Polling(轮询)**:简单轮询是最基础的推送实现,客户端定时向服务器发送请求检查是否有新数据。虽然简单,但效率低下,服务器压力大。 - **Long Polling(长轮询)**:在长轮询中,...
在本文中,我们将深入探讨如何解决Flex数据推送问题,特别是在实时行情应用中,如股票、外汇和期货等。传统的做法是客户端定期向服务器发起请求获取最新数据,但这种方法效率较低且浪费资源。相反,我们可以利用...
《Flex+BlazeDS+Java后台消息推送:一个简单示例》 在现代软件开发中,实时通信成为了提升用户体验的关键因素。特别是在Web应用程序中,后台消息推送技术允许服务器主动将信息推送到客户端,无需用户频繁刷新页面。...
BlazeDS是Adobe提供的一个免费服务器端组件,它允许Flex客户端与Java后端进行双向通信,实现了轻量级的远程方法调用(RPC)以及数据推送功能。Java是一种广泛使用的面向对象的编程语言,常用于构建服务器端应用。JMS...
FLEX,BlazeDS,JAVA实现服务器端数据推送技术,下载后直接导到你的MYECLIPSE即可运行。先在IE内输入:http://localhost:8080/pushDemo/flex/pushDemo.html,点击“button”后,再另一个IE窗口内输入:...
Flex Air是中国Adobe公司开发的一款基于Flash技术的富互联网应用程序(RIA)开发平台,它允许开发者创建可以在桌面运行的跨平台应用程序。本“Flex Air中文官方帮助文档”是开发者的重要参考资料,详细介绍了Flex ...
在本场景中,我们将探讨如何利用BlazeDS和Flex实现服务器消息推送。 首先,让我们了解BlazeDS的基本概念。BlazeDS是Adobe Flex与Java后端进行数据交互的一个中间件,它支持AMF(Action Message Format)协议,能够...
接收消息则需要监听特定的事件,例如`onMessage`事件,当接收到服务器推送的消息时,处理这些事件并更新UI显示。 对于多平台支持,Flex使用Adobe AIR框架可以轻松地在iOS和Android设备上部署应用程序,因为AIR提供...
在 Flex 应用中,客户端可以通过 `flex.messaging.MessageBroker` 发布消息,而服务器端则处理这些消息并推送给已订阅的客户端。消息订阅者可以通过 selector 属性来筛选接收的消息,实现定制化接收。 在 BlazeDS ...