`
ridn_jache
  • 浏览: 1341 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

java send message to flex(BlazeDS)

阅读更多
最近公司想把flex与java后的通信成用BlazeDS,试了几天总算跑通了。
对BlazeDS不了解的可以先去这里了解下http://livedocs.adobe.com/blazeds/1/blazeds_devguide/

下面是步骤:
1.下载BlazeDS.war解压到%TOMCAT_HOME%/webapps目录下文件名为blazeds内包涵了WEB-INF和META-INF文件夹。
2.写一个flex的客户端 dsMessage.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" 
	creationComplete="applicationInit()">
	<mx:Script>
		<![CDATA[
			import mx.messaging.ChannelSet;
			import mx.messaging.channels.AMFChannel;
			import mx.controls.Alert;
			import mx.messaging.events.MessageEvent;
			import mx.messaging.messages.AsyncMessage;
			import mx.messaging.events.MessageFaultEvent;
			import mx.messaging.events.MessageAckEvent;
			import mx.rpc.events.ResultEvent;
			import mx.rpc.events.FaultEvent;
			
			private function applicationInit():void{
				var url:String ="http://192.168.1.102/blazeds/"; //随便的以个blazeds应用 如果192.168.1.102改成 localhost后其它的电脑就访问不了。
//				var myStreamingAMF:StreamingAMFChannel = new StreamingAMFChannel(url+"my-streaming-amf", url+"messagebroker/streamingamf");
				var myPollingAMF:AMFChannel = new AMFChannel(url+"my-polling-amf", url+"messagebroker/amfpolling");
				myPollingAMF.pollingEnabled = true;//轮询
				myPollingAMF.pollingInterval = 1000;//隔多长时间询问一次 1miao
				var channelSet:ChannelSet = new ChannelSet();
//				channelSet.addChannel(myStreamingAMF);
				channelSet.addChannel(myPollingAMF);
							
				messageProducer.channelSet = channelSet;
				messageConsumer.channelSet = channelSet;
				
				messageConsumer.subscribe();				
			}
			
			private function addMessageToArea(message:String):void
			{
				chatMessagesArea.text = chatMessagesArea.text + "\n" + message;
			}
			
			private function handleResponse(event:MessageEvent):void
			{
				var message:String = null;
				message = event.message.headers["sender"] + ": " + event.message.body;
				addMessageToArea(message);	
			}
			private function sendMessage():void
			{
				var message:AsyncMessage = new AsyncMessage();
				message.headers = new Array();
				message.headers["sender"] = "sunny";
				message.body = chatMessageTxt.text;
				messageProducer.send(message);
				chatMessageTxt.text = "";
			}
			
			private function handleFaults(event:MessageFaultEvent):void
			{
				Alert.show(event.faultString);
			}
			
			private function handleAcknowledgements(event:MessageAckEvent):void
			{
				trace("done");
			}
			
		]]>
	</mx:Script>

	<mx:Producer id="messageProducer"
		destination="mychat"
		fault="handleFaults(event);"
		acknowledge="handleAcknowledgements(event)"
		/>
	<mx:Consumer id="messageConsumer"
		destination="mychat"		
		fault="handleFaults(event)"
		message="handleResponse(event)"
		/>
	<mx:VBox width="100%" height="100%">
		<mx:TextArea id="chatMessagesArea" editable="false"  width="100%" height="100%" 
			fontFamily="Georgia" fontSize="19" color="#2194AD"/>
		<mx:HBox width="100%" height="27">
			<mx:TextInput id="chatMessageTxt"  width="100%" height="100%" 
				fontFamily="Georgia" fontSize="15" enter="sendMessage()"/>
			<mx:Button id="chatMessageBtn" label="Send" width="64" 
				height="100%" click="sendMessage();"/>		
		</mx:HBox>						
	</mx:VBox>
	
</mx:Application>

3.写一个java类MessageSender
package com.kinorsoft;
import java.util.Date;

import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;

public class MessageSender {

	public void sendMessageToClients(String messageBody)
	{
		AsyncMessage msg = new AsyncMessage();

		msg.setClientId("Java-Based-Producer-For-Messaging");
		msg.setTimestamp(new Date().getTime());
		//you can create a unique id
		msg.setMessageId("Java-Based-Producer-For-Messaging-ID");
		//destination to which the message is to be sent
		msg.setDestination("mychat");		
		//set message body
		msg.setBody(messageBody != null?messageBody:"");
		//set message header
		msg.setHeader("sender", "From the server");

		//send message to destination
		MessageBroker.getMessageBroker(null).routeMessageToService(msg, null);			
	}

}

4.MessageSender.jsp调用上面的MessageSender.java
<%@page import="com.kinorsoft.MessageSender" %>
<%
	try
		{
	
		com.kinorsoft.MessageSender msg = new com.kinorsoft.MessageSender();
		msg.sendMessageToClients("This is from the jsp page");
		out.println("sent message");
		}
		catch(Exception e)
		{
	e.printStackTrace();
		}
%>

5.修改一下 WEB-INF/flex/messaging-config.xml
在<service>下加上
<destination id="mychat"></destination>
分享到:
评论
1 楼 spell 2010-07-20  
楼主还是长轮询,还是在隔一段时间,主动访问服务器,服务器压力很大啊,每一秒就要建立连接,请求好了,再关闭。不适合大量的用户使用。

相关推荐

    用一个HelloWorld例子手把手教会你使用FLEX BlazeDS

    BlazeDS是一款由Adobe开源的服务器端Java技术,主要用于实现Java应用程序与运行在客户端(如浏览器中的Flex应用)之间的远程调用和消息传递功能。通过BlazeDS,开发者可以轻松地构建实时通信的应用程序,并利用其...

    flex+blazeds+java 第一个Hello程序

    BlazeDS支持AMF(Action Message Format),这是一种高效的数据交换格式,可实现Flex与Java之间的快速数据传输。 3. 第一个Flex + BlazeDS + Java程序 我们的目标是创建一个简单的“Hello, World”程序,展示Flex、...

    spring flex BlazeDS 集成官方文档(英文)

    **背景**:Spring BlazeDS 集成是Springsource为了更好地将Spring框架与Adobe Flex应用程序结合而开发的一个解决方案。它使得开发者能够利用BlazeDS作为中间件来连接前端Flex应用程序与后端Spring服务层。 **依赖...

    flex+blazeds+java后台消息推送(简单示例)[借鉴].pdf

    BlazeDS是Adobe提供的一个开源框架,它提供了AMF(Action Message Format)协议,使得Java和Flex之间能够进行高效的数据交换。将Web项目转换为Flex项目后,我们需要配置两个核心文件:`services-config.xml`和`...

    flex与java通信

    客户端(Flex应用)通过HTTP、AMF(Action Message Format)或其他协议向服务器发送请求,服务器(Java应用)处理请求并返回响应。这种通信方式使得动态内容和交互性增强,提高了用户体验。 2. 技术栈: - Flex:...

    一个最简单的flex与java交互的例子

    在Flex应用中,与Java交互通常是通过AMF(Action Message Format)或HTTP服务来实现的。AMF是一种高效的数据序列化格式,它允许Flex客户端和Java服务器之间快速传输复杂对象。而HTTP服务则更通用,可以使用XML、JSON...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    由于 BlazeDS 需要将 Java 接口 FlexService 暴露给 Flex 前端,因此,我们在配置文件 remoting-config.xml 中将 FlexService 接口声明为一个服务: 清单 6. 定义 flexService 服务 &lt;destination id="flex...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    由于 BlazeDS 需要将 Java 接口 FlexService 暴露给 Flex 前端,因此,我们在配置文件 remoting-config.xml 中将 FlexService 接口声明为一个服务: 清单 6. 定义 flexService 服务 &lt;destination id="flex...

    Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) part2.pdf

    最后,通过访问`http://localhost:8089/FlexJ2ee/flex/FlexJ2ee.html`,并在页面上输入名字后点击“send”按钮,可以看到Flex客户端成功调用了Java方法,并显示了返回结果。 #### 三、总结 通过上述步骤,我们可以...

    Flex与Java通过实体传递数据

    在Flex和Java之间传递数据时,通常采用AMF(Action Message Format)或HTTP服务(如SOAP或RESTful服务)。AMF是一种高效的二进制格式,用于在Flash Player和服务器之间传输数据,它提供了比XML或JSON更快的数据序列...

    Flex 与 java 低数据量通信

    Flex 与 Java 之间的通信是开发富互联网应用(RIA)时常见的需求,特别是在构建跨平台、前后端分离的系统中。...对于大型项目,推荐使用 BlazeDS 或 GraniteDS 等中间件来提供更高级的Flex与Java集成解决方案。

    blazeds 的点对点的消息发布和订阅

    Blazeds是一个强大的Flex和Java之间的消息通信框架,由Adobe公司开发,主要用于构建富互联网应用程序(RIA)。在本文中,我们将深入探讨BlazDS的点对点(P2P)消息发布和订阅机制,这是一种允许应用程序之间直接交换...

    spring-flex-reference

    AMF(Action Message Format)是Adobe Flex和BlazeDS之间通信的主要格式。为了处理AMF消息,需要定义AMF消息目的地。 ```xml &lt;bean id="amfMessageDestination" class="com.adobe.blazeds.messaging....

    Flex如何让前台链接后并访问数据库

    要连接到数据库,Flex通常会通过HTTP服务或AMF(Action Message Format)通道与服务器进行通信。AMF是Adobe开发的一种二进制协议,能高效地传输对象,常用于Flex与服务器间的数据交换。我们可以通过Adobe LiveCycle ...

    flex开发例子 flex与后台交互的例子 flex工程

    而AMF(Action Message Format)通道则提供更高效的数据交换方式,适合于Flex与基于Adobe BlazeDS或LCDS的服务器之间进行数据交互。 本Flex工程"flexDemo"包含了一个完整的交互实例,可能包括以下几个关键部分: 1...

    Flex基于Producer和Consumer方式的简易消息推送机制

    这通常涉及Flex服务器的配置,如BlazeDS或LiveCycle Data Services。 8. **Flex框架**: 示例代码中使用的`mx:Application`、`mx:Script`、`mx:Producer`、`mx:Consumer`等都是Flex MX组件,它们是Adobe Flex框架...

    Flex连接数据库的方法

    - **Flex中的数据访问**:Flex应用通常通过AMF(Action Message Format)或XML/HTTP来与服务器端的数据服务进行通信。AMF提供了高效的二进制数据交换格式,而XML/HTTP则基于标准的HTTP协议,适用于跨域通信。 - **...

    flex前台和后台交互例子

    Adobe提供了BlazeDS和LiveCycle Data Services这两个中间件,用于在Flex与Java服务器之间建立AMF连接。BlazeDS是免费的开源项目,而LiveCycle Data Services提供更多的企业级特性。它们都支持HTTP、HTTP Streaming...

    Flex与处部的数据通信和图表

    Remoting是另一种远程调用方式,通常用于与服务器端的AMF(Action Message Format)服务通信,如Flash Remoting或BlazeDS。这种方式提供了更高效的数据传输,因为AMF是一种二进制协议。 **4.2 Flex图表** 图表是...

    Flex使用RemotingObject和后台通信的基本步骤

    在Flex中,RemotingObject是Flash Player或Adobe AIR应用程序通过HTTP、AMF(Action Message Format)协议与远程服务器进行通信的一种方式。AMF是一种高效的数据交换格式,能够快速地序列化和反序列化数据,适合用于...

Global site tag (gtag.js) - Google Analytics