`

FLEX blazeds推送技术至Flex(1)

    博客分类:
  • Flex
 
阅读更多


第一步下载blazeds.war
第二步修改两个配置文件:services-config.xml,messaging-config.xml

services-config.xml加入下面代码
程序代码 程序代码

<channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
             <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
             <properties>
                 <idle-timeout-minutes>0</idle-timeout-minutes>
                 <max-streaming-clients>10</max-streaming-clients>
                 <server-to-client-heartbeat-millis>5000</server-to-client-heartbeat-millis>
                 <user-agent-settings>
                     <user-agent match-on="MSIE" kickstart-bytes="2048" max-streaming-connections-per-session="1"/>
                     <user-agent match-on="Firefox" kickstart-bytes="2048" max-streaming-connections-per-session="1"/>
                 </user-agent-settings>
             </properties>
         </channel-definition>


messaging-config.xml加入下面的代码
程序代码 程序代码

<destination id="tick-data-feed">
         <properties>
             <server>
                 <allow-subtopics>true</allow-subtopics>
                 <subtopic-separator>.</subtopic-separator>
             </server>
         </properties>
         <channels>
             <channel ref="my-polling-amf" />
             <channel ref="my-streaming-amf" />
         </channels>
     </destination>


第三步:创建一个Servlet:
程序代码 程序代码

package cn.bestwiz.design.tc.servlet;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.bestwiz.design.tc.Tick;
import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.util.UUIDUtils;

public class TickCacheServlet extends HttpServlet {

    
     private static final long serialVersionUID = 1L;
     private static FeedThread thread;

     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
             throws ServletException, IOException {

         String cmd = req.getParameter("cmd");
         if (cmd.equals("start")) {
             start();
         }
         if (cmd.equals("stop")) {
             stop();
         }
     }

     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
             throws ServletException, IOException {
         // TODO Auto-generated method stub
         super.doGet(req, resp);
     }

     @Override
     public void destroy() {
         // TODO Auto-generated method stub
         super.destroy();
     }

     @Override
     public void init() throws ServletException {
         // TODO Auto-generated method stub
         super.init();
     }

     public void start() {
         if (thread == null) {
             thread = new FeedThread();
             thread.start();
         }
         System.out.println("start!!");
     }

     public void stop() {
         thread.running = false;
         thread = null;
     }

     public static class FeedThread extends Thread {

         public boolean running = true;

         public void run() {
             MessageBroker msgBroker = MessageBroker.getMessageBroker(null);
             String clientID = UUIDUtils.createUUID();
             int i = 0;
             while (running) {
                 Tick tick = new Tick();
                 tick.setAskPrice(new BigDecimal("100"));
                 tick.setBidPrice(new BigDecimal("100"));
                 tick.setMidPrice(new BigDecimal("100"));
                 tick.setTickTime(new Date());

                 tick.setSeqno(String.valueOf(i));
                 System.out.println(i);

                 AsyncMessage msg = new AsyncMessage();
                 msg.setDestination("tick-data-feed");
                 msg.setHeader("DSSubtopic", "tick");
                 msg.setClientId(clientID);
                 msg.setMessageId(UUIDUtils.createUUID());
                 msg.setTimestamp(System.currentTimeMillis());
                 msg.setBody(tick);
                 msgBroker.routeMessageToService(msg, null);
                 i++;
                 try {
                     Thread.sleep(20);
                 } catch (InterruptedException e) {
                 }

             }
         }
     }

}

第四步:创建一个Java类:
程序代码 程序代码

package cn.bestwiz.design.tc;

import java.math.BigDecimal;
import java.util.Date;

public class Tick {
     private BigDecimal askPrice;

     private BigDecimal bidPrice;

     private BigDecimal midPrice;

     private Date tickTime;

     private String seqno;

     public String getSeqno() {
         return seqno;
     }

     public void setSeqno(String seqno) {
         this.seqno = seqno;
     }

     public BigDecimal getAskPrice() {
         return askPrice;
     }

     public void setAskPrice(BigDecimal askPrice) {
         this.askPrice = askPrice;
     }

     public BigDecimal getBidPrice() {
         return bidPrice;
     }

     public void setBidPrice(BigDecimal bidPrice) {
         this.bidPrice = bidPrice;
     }

     public BigDecimal getMidPrice() {
         return midPrice;
     }

     public void setMidPrice(BigDecimal midPrice) {
         this.midPrice = midPrice;
     }

     public Date getTickTime() {
         return tickTime;
     }

     public void setTickTime(Date tickTime) {
         this.tickTime = tickTime;
     }

}


第五步:
配置Flex项目:
Root Folder:C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\blazeds
Root URL:http://localhost:8080/blazeds
Context Root:/blazeds

第六步:创建AS类:
程序代码 程序代码

package cn.sloppy
{
     [RemoteClass(alias="cn.bestwiz.design.tc.Tick")]
     [Bindable]
     public class Tick
     {
         public function Tick()
         {
         }
         public var askPrice:Number;
         public var bidPrice:Number;
         public var midPrice:Number;
         public var tickTime:Date;;
         public var seqno:String;

     }
}

第七步:Flex主程序代码
程序代码

//
             import mx.controls.Alert;
             import mx.rpc.events.ResultEvent;
             import mx.messaging.Consumer;
             import mx.messaging.Channel;
             import mx.messaging.ChannelSet;
             import mx.messaging.events.MessageEvent;
             // 
[Bindable]
             public var tick:Tick;
public function submsg():void
             {
                 Alert.show("click start");
                 var consumer:Consumer = new Consumer();
                 consumer.destination = "tick-data-feed";
                 consumer.subtopic = "tick";
                 consumer.channelSet = new ChannelSet(["my-streaming-amf"]);
                 consumer.addEventListener(MessageEvent.MESSAGE, messageHandler);
                 consumer.subscribe();
                 Alert.show("click end");
             }
            
             private function messageHandler(event:MessageEvent):void 
             {
                 var tick:Tick = event.message.body as Tick;
                 txtTick.text = tick.seqno;
             }
<mx:Panel x="524" y="47" width="362" height="302" layout="absolute" title="Watch Tick">
         <mx:Label x="72" y="43" text="Label" id="txtTick"/>
         <mx:Button x="132" y="41" label="Button" click="submsg(); "/>
     </mx:Panel>

第七步:运行Flex:http://localhost:8080/blazeds/HelloWorld-debug/HelloWorld.html?debug=true
点击Button
迂曲运行Servlet:http://localhost:8080/blazeds/TickCacheServlet?cmd=start
再看看Flex的效果:是不是文字一直在增长?
恭喜。成功了。 
分享到:
评论

相关推荐

    Flex + blazeds + Java推送

    Flex + blazeds + Java推送Demo 本例实现由Flex一端客户端发送消息, 然后由Java端在发布到所有订阅的其它Flex端. 里面有说明与源码, 还有一个直接放到Tomcat里面的直接发布的项目 小编使用工具 eclipse3.5 flex sdk...

    FLEX_Blazeds数据推送技术

    FLEX,BlazeDS,JAVA实现服务器端数据推送技术,下载后直接导到你的MYECLIPSE即可运行。先在IE内输入:http://localhost:8080/pushDemo/flex/pushDemo.html,点击“button”后,再另一个IE窗口内输入:...

    Flex BlazeDs 推数据生成lineChart实例

    Flex BlazeDs推数据生成lineChart实例是一个典型的前端与后端实时通信的应用场景,它结合了Adobe Flex技术用于前端用户界面的构建,BlazeDS作为数据推送服务,以及使用lineChart组件来展示动态更新的数据。...

    flex blazeDS开发使用手册,对于集成blaze开发很有用处。

    BlazeDS是一款开源的服务器端技术,它为富互联网应用(RIA)提供了数据推送、消息传递和Remoting功能,主要用于Flash/Flex与Java后端之间的通信。 1. **BlazeDS概述**: BlazeDS是Adobe Flex企业版的一部分,它...

    Flex BlazeDS

    flex blazeds实现服务器向客户端推送数据 环境Eclipse Java EE IDE 服务apache-tomcat-7.0.23-windows-x86 blazeds采用的是blazeds4.0.0.14931 (附件中包含 apache-tomcat-7.0.23 + 源码 + 说明文档)

    flex+spring+blazeds消息推送

    标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...

    Flex与Java的消息推送

    Flex与Java的消息推送技术主要涉及的是前端Flex应用与后端Java服务器之间的实时数据交互。在Web应用程序中,传统的HTTP协议是基于请求-响应模型的,客户端(浏览器)发起请求,服务器响应,然后连接关闭。然而,对于...

    flex 推送 例子

    有关于flex推送技术的工程例子,使用blazeds的StreamingAMFChannel 通道实现推送功能。(使用前先启动http://localhost:8080/flex-blazeds/TickCacheServlet?cmd=start)

    Flex BlazeDS通信

    6. **实时推送(Push)**:BlazeDS支持基于HTTP的Long Polling和Streaming,实现服务器向客户端的实时数据推送。这种特性使得金融、聊天室等需要实时更新的应用场景得以实现。 7. **安全性和性能优化**:BlazeDS...

    BlazeDS实现java后台消息推送flex前台接收的例子

    在"BlazeDS实现java后台消息推送flex前台接收的例子"中,我们主要关注以下几个关键知识点: 1. **BlazeDS架构**:BlazeDS包含了一组服务,如Remoting服务、LiveCycle Data Services(LCDS)以及MessageBroker服务。...

    Flex + BlazeDS + Java + JMS 通信实例(附源码)

    BlazeDS是Adobe提供的一个免费服务器端组件,它允许Flex客户端与Java后端进行双向通信,实现了轻量级的远程方法调用(RPC)以及数据推送功能。Java是一种广泛使用的面向对象的编程语言,常用于构建服务器端应用。JMS...

    flex+blazeds+spring

    BlazeDS是Adobe提供的一个免费服务器端技术,它为Flex客户端提供了与Java应用程序交互的能力,包括实时消息传递、Remoting和数据推送等功能。Spring是一个广泛使用的Java企业级应用开发框架,它简化了Java应用程序的...

    Flex Blazeds java实现企业级Web系统页面【源码】

    它支持EJB、Spring、Hibernate等Java企业框架,方便整合现有的企业服务,同时,Blazeds还支持数据推送,使得服务器可以主动将数据推送到客户端,提升了用户体验。 5. **源码分析**:在"FlexTest"这个压缩包中,可能...

    Flex blazeds封装实体

    BlazDS提供了丰富的数据服务,包括远程方法调用(Remote Method Invocation, RMI)、消息代理(Message Brokering)以及数据推送等功能,使得Flex应用程序能够轻松地与Java服务器进行数据交互。 在Flex BlazDS中,...

    blazeds和flex整合

    BlazeDS是Adobe提供的一个开源服务器端数据推送技术,而Flex是用于创建RIA的客户端开发框架。这篇文章将深入探讨这两者如何协同工作,以及它们在实际项目中的应用。 **BlazeDS简介** BlazeDS是Adobe LiveCycle Data...

    基于Java_BlazeDS_Flex_服务器消息推的聊天室

    总之,通过Java BlazeDS Flex技术,我们可以构建一个高效、实时的聊天室应用,利用服务器推送实现消息的即时传递。这种方法不仅可以应用于聊天室,还可以扩展到股票交易、在线协作等实时应用场景。

    flex采用blazeds实现服务器向客户端推数据

    本文主要探讨如何利用Flex和BlazDS实现服务器向客户端的数据推送功能,尤其适用于实时性强的应用,如股票、外汇和期货市场的实时行情显示。 BlazDS是Adobe提供的一个开源服务器端解决方案,它允许Flex客户端与Java...

    Flex + java 推送技术示例

    Flex与Java结合推送技术是一种常见的跨平台通信方案,主要用于构建富互联网应用程序(RIA)。本示例将探讨如何在Flex前端与Java后台之间实现数据的实时推送,以提高用户体验。Flex作为一个基于ActionScript的开放源...

    使用BlazeDS实现flex与java 整合

    3. **Real-time Data Push**:BlazeDS支持Server-Sent Events和Long Polling,实现数据的实时推送,使Flex客户端能够实时更新视图。 4. **Security**:在整合过程中,确保数据安全是非常重要的。可以通过配置...

Global site tag (gtag.js) - Google Analytics