最近公司想把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>
分享到:
- 2009-12-15 16:26
- 浏览 1341
- 评论(1)
- 论坛回复 / 浏览 (1 / 4885)
- 查看更多
相关推荐
BlazeDS是一款由Adobe开源的服务器端Java技术,主要用于实现Java应用程序与运行在客户端(如浏览器中的Flex应用)之间的远程调用和消息传递功能。通过BlazeDS,开发者可以轻松地构建实时通信的应用程序,并利用其...
BlazeDS支持AMF(Action Message Format),这是一种高效的数据交换格式,可实现Flex与Java之间的快速数据传输。 3. 第一个Flex + BlazeDS + Java程序 我们的目标是创建一个简单的“Hello, World”程序,展示Flex、...
**背景**:Spring BlazeDS 集成是Springsource为了更好地将Spring框架与Adobe Flex应用程序结合而开发的一个解决方案。它使得开发者能够利用BlazeDS作为中间件来连接前端Flex应用程序与后端Spring服务层。 **依赖...
BlazeDS是Adobe提供的一个开源框架,它提供了AMF(Action Message Format)协议,使得Java和Flex之间能够进行高效的数据交换。将Web项目转换为Flex项目后,我们需要配置两个核心文件:`services-config.xml`和`...
客户端(Flex应用)通过HTTP、AMF(Action Message Format)或其他协议向服务器发送请求,服务器(Java应用)处理请求并返回响应。这种通信方式使得动态内容和交互性增强,提高了用户体验。 2. 技术栈: - Flex:...
在Flex应用中,与Java交互通常是通过AMF(Action Message Format)或HTTP服务来实现的。AMF是一种高效的数据序列化格式,它允许Flex客户端和Java服务器之间快速传输复杂对象。而HTTP服务则更通用,可以使用XML、JSON...
由于 BlazeDS 需要将 Java 接口 FlexService 暴露给 Flex 前端,因此,我们在配置文件 remoting-config.xml 中将 FlexService 接口声明为一个服务: 清单 6. 定义 flexService 服务 <destination id="flex...
由于 BlazeDS 需要将 Java 接口 FlexService 暴露给 Flex 前端,因此,我们在配置文件 remoting-config.xml 中将 FlexService 接口声明为一个服务: 清单 6. 定义 flexService 服务 <destination id="flex...
最后,通过访问`http://localhost:8089/FlexJ2ee/flex/FlexJ2ee.html`,并在页面上输入名字后点击“send”按钮,可以看到Flex客户端成功调用了Java方法,并显示了返回结果。 #### 三、总结 通过上述步骤,我们可以...
在Flex和Java之间传递数据时,通常采用AMF(Action Message Format)或HTTP服务(如SOAP或RESTful服务)。AMF是一种高效的二进制格式,用于在Flash Player和服务器之间传输数据,它提供了比XML或JSON更快的数据序列...
Flex 与 Java 之间的通信是开发富互联网应用(RIA)时常见的需求,特别是在构建跨平台、前后端分离的系统中。...对于大型项目,推荐使用 BlazeDS 或 GraniteDS 等中间件来提供更高级的Flex与Java集成解决方案。
Blazeds是一个强大的Flex和Java之间的消息通信框架,由Adobe公司开发,主要用于构建富互联网应用程序(RIA)。在本文中,我们将深入探讨BlazDS的点对点(P2P)消息发布和订阅机制,这是一种允许应用程序之间直接交换...
AMF(Action Message Format)是Adobe Flex和BlazeDS之间通信的主要格式。为了处理AMF消息,需要定义AMF消息目的地。 ```xml <bean id="amfMessageDestination" class="com.adobe.blazeds.messaging....
要连接到数据库,Flex通常会通过HTTP服务或AMF(Action Message Format)通道与服务器进行通信。AMF是Adobe开发的一种二进制协议,能高效地传输对象,常用于Flex与服务器间的数据交换。我们可以通过Adobe LiveCycle ...
而AMF(Action Message Format)通道则提供更高效的数据交换方式,适合于Flex与基于Adobe BlazeDS或LCDS的服务器之间进行数据交互。 本Flex工程"flexDemo"包含了一个完整的交互实例,可能包括以下几个关键部分: 1...
这通常涉及Flex服务器的配置,如BlazeDS或LiveCycle Data Services。 8. **Flex框架**: 示例代码中使用的`mx:Application`、`mx:Script`、`mx:Producer`、`mx:Consumer`等都是Flex MX组件,它们是Adobe Flex框架...
- **Flex中的数据访问**:Flex应用通常通过AMF(Action Message Format)或XML/HTTP来与服务器端的数据服务进行通信。AMF提供了高效的二进制数据交换格式,而XML/HTTP则基于标准的HTTP协议,适用于跨域通信。 - **...
Adobe提供了BlazeDS和LiveCycle Data Services这两个中间件,用于在Flex与Java服务器之间建立AMF连接。BlazeDS是免费的开源项目,而LiveCycle Data Services提供更多的企业级特性。它们都支持HTTP、HTTP Streaming...
Remoting是另一种远程调用方式,通常用于与服务器端的AMF(Action Message Format)服务通信,如Flash Remoting或BlazeDS。这种方式提供了更高效的数据传输,因为AMF是一种二进制协议。 **4.2 Flex图表** 图表是...
在Flex中,RemotingObject是Flash Player或Adobe AIR应用程序通过HTTP、AMF(Action Message Format)协议与远程服务器进行通信的一种方式。AMF是一种高效的数据交换格式,能够快速地序列化和反序列化数据,适合用于...