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的简单通信,中间需要BlazeDS技术实现互联,可以实现信息的推送
源代码实现功能: 1. 实现了Flex与Java后台...2. 实现了Flex的消息推送技术,实现服务器端消息的发布以及多客户端消息的订阅。 3. 实现Java端动态创建Destination提供给Flex调用。 4. 适用于动态热部署项目需求的应用。
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基于Producer和Consumer方式的简易消息推送机制
elipse下配置的spring+flex+blazeds,进行消息推送,还加入了了quarz定时策略。希望对大家有帮助。
FLEX,BlazeDS,JAVA实现服务器端数据推送技术,下载后直接导到你的MYECLIPSE即可运行。先在IE内输入:http://localhost:8080/pushDemo/flex/pushDemo.html,点击“button”后,再另一个IE窗口内输入:...
如果大伙想对flex数据推送有疑惑,请下载该文档!
flex 推数
NULL 博文链接:https://mengqingyu.iteye.com/blog/1961733
flex+blazeds+java后台消息推送(简单示例)[借鉴].pdf
Flex + java 推送技术示例, Flex 调用 java 后台的三种模式, 示例可以运行, 修改下工程配置就可以 .
Flex订阅JMS实现实时刷新 利用BlazeDS和JMS的消息机制实现数据的推送,从而实现页面的实时刷新(含详细的说明文档和源码)
包含flex 的包和 spring 的包,用的时候自己拷进去 启动tomcat 访问:http://localhost:8080/monitoring/Test 启动测试线程 在访问:http://localhost:8080/monitoring/monitoring-debug/monitoring.html
费了好大力气才找到的,希望对大家有帮助。从安装等简单的东西,到使用本地数据库,网络,本地化等高级的功能。
一个blazeds的eclipse工程的消息推送的例子,导入就可以运行例子
基于Java_BlazeDS_Flex_服务器消息推的聊天室 了解BlazeDS推送机制,flex调用java web BlazeDS的过程 服务器推,摒弃ajax的轮询,减轻服务器压力!
Flex+java+bluzeds反向推送.docx
压缩包内包含java后端、flex前端代码,配置文档,jar包