web.xml
<servlet>
<servlet-name>flex</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>flex</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
spring
<flex:message-broker>
<flex:message-service
default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
</flex:message-broker>
<flex:message-destination id="simple-feed" />
<!-- Pojo used to start and stop the data feed that pushes data in the 'simple-feed' destination -->
<bean id="simpleFeedStarter" class="SimpleFeed 类路径">
<constructor-arg ref="defaultMessageTemplate" />
<flex:remoting-destination />
</bean>
java:
import java.util.Random;
import org.springframework.flex.messaging.MessageTemplate;
public class SimpleFeed {
private static FeedThread thread;
private final MessageTemplate template;
public SimpleFeed(MessageTemplate template) {
this.template = template;
}
public void start() {
if (thread == null) {
thread = new FeedThread(this.template);
thread.start();
}
}
public void stop() {
thread.running = false;
thread = null;
}
public static class FeedThread extends Thread {
public boolean running = false;
private final MessageTemplate template;
public FeedThread(MessageTemplate template) {
this.template = template;
}
@Override
public void run() {
this.running = true;
Random random = new Random();
double initialValue = 35;
double currentValue = 35;
double maxChange = initialValue * 0.005;
while (this.running) {
double change = maxChange - random.nextDouble() * maxChange * 2;
double newValue = currentValue + change;
if (currentValue < initialValue + initialValue * 0.15 && currentValue > initialValue - initialValue * 0.15) {
currentValue = newValue;
} else {
currentValue -= change;
}
this.template.send("simple-feed", new Double(currentValue));
System.out.println("" + currentValue);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
}
}
}
}
}
flex:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="20" backgroundColor="#FFFFFF">
<mx:Script>
<![CDATA[
import mx.messaging.messages.IMessage;
private function messageHandler(message:IMessage):void
{
pushedValue.text = ""+ message.body;
}
]]>
</mx:Script>
<mx:ChannelSet id="cs">
<!-- <mx:StreamingAMFChannel url="http://localhost:8080/testdrive/messagebroker/streamingamf"/> -->
<mx:AMFChannel url="http://localhost:8080/testdrive/messagebroker/amflongpolling"/>
<mx:AMFChannel url="http://localhost:8080/testdrive/messagebroker/amfpolling"/>
</mx:ChannelSet>
<mx:Consumer id="consumer" destination="simple-feed" channelSet="{cs}"
message="messageHandler(event.message)"/>
<mx:TextInput id="pushedValue" width="250"/>
<mx:Button label="Subscribe" click="consumer.subscribe()" enabled="{!consumer.subscribed}"/>
<mx:Button label="Unsubscribe" click="consumer.unsubscribe()" enabled="{consumer.subscribed}"/>
</mx:Application>
分享到:
相关推荐
1. **BlazeDS简介**:BlazeDS是Adobe Flex服务器端的组件,它提供了数据推送、消息代理和Remoting服务,使得Flex应用能够与Java应用服务器进行实时通信。BlazeDS支持HTTP长轮询、WebSocket和HTTP Streaming等数据推...
BlazeDS是Adobe提供的一个开源项目,它为富互联网应用(RIA)提供了数据推送服务,使得服务器可以主动将数据推送到客户端。Spring BlazeDS Integration则是Spring社区为方便Spring与BlazeDS集成而开发的一套工具,它...
在Flex中,我们通常使用Service组件(如RemoteObject、WebService或HTTPService)来调用Java后台服务。这些服务组件可以配置到特定的URL,处理HTTP请求和响应,将AMF数据转换为Flex可以理解的对象。 5. **Java ...
5. **Integration with Spring Framework**:BlazeDS可以无缝集成Spring框架,使得Java开发者可以充分利用Spring的依赖注入、事务管理等特性,简化服务器端的开发。 6. **Flex SDK支持**:BlazeDS提供了与Flex SDK...
2. **优化通信**:减少不必要的网络请求,利用BlazeDS的缓存和数据推送功能。 3. **安全性考虑**:在设计和实现阶段就考虑到安全问题,如使用Spring Security保护接口。 4. **文档记录**:良好的文档可以帮助团队...
3. LiveCycle Data Services (LCDS):LCDS是Adobe的高级服务,扩展了BlazeDS的功能,提供了更强大的数据服务,如实时推送、数据缓存、事件广播等。对于大型企业应用,LCDS可以提供更加稳定和高性能的服务。 4. Java...
这里的Spring BlazeDS Integration是Spring框架对BlazeDS的集成,提供了更便捷的数据推送和事件驱动功能。 3. Flex、BlazeDS、Spring(版本)、iBATIS与pureMVC的架构。pureMVC是一个轻量级的MVC框架,提供了一种...
5. **Spring BlazeDS Integration**: Spring框架提供了与BlazeDS集成的模块,使得Java开发者能够轻松地将Flex前端与Spring应用后端连接起来,利用Spring的依赖注入和管理特性。 6. **数据模型和状态管理**: 在整合...
5. **Integration with Spring Framework**:BlazeDS可以无缝集成Spring框架,使得Java后端的服务可以直接暴露为Flex客户端可调用的接口,简化了服务的开发和管理。 6. **Flex Builder支持**:Adobe Flex Builder...
8. Spring集成:如果你的Java应用使用了Spring框架,那么可以利用Spring-BlazeDS Integration库来简化Java与Flex的集成,它可以自动将Spring Beans暴露为Flex服务。 在“JavaFlex项目”这个压缩包中,很可能包含了...
BlazeDS是Spring提供的一个开源项目,提供了一个轻量级的HTTP/HTTPS服务器,用于在Flex客户端和Spring应用之间进行数据推送和远程调用。 6. 测试和部署:项目中的"testspringflex"可能包含了测试用例和部署配置,这...
BlazeDS则是Adobe提供的一个开源服务器端组件,它为Flex应用程序提供了实时的数据推送服务,使得Web应用可以实现双向通信,即服务器可以主动向客户端推送数据,而不仅仅是客户端请求数据。 Flex主要由以下组件构成...
4. **Integration with Java Frameworks**:Blazeds可以轻松集成Spring、Hibernate等Java企业级框架,使得开发者可以在Java后端使用熟悉的开发工具和技术栈。 5. **Flex SDK支持**:Blazeds与Adobe Flex SDK紧密...
4. **Integration with Java Frameworks**: LCDS能够很好地与Java生态系统中的各种框架集成,如Spring、Hibernate、EJB等,使得Java开发者可以利用已有的技术栈来构建Flex应用的后端。 5. **Security**: LCDS提供了...
- **Live Data Services**: 支持数据推送,使得服务器能主动向客户端发送更新。 2. **Spring与BlazeDS的整合** - **Spring-BlazeDS Integration**: 这是Spring社区提供的一个模块,简化了BlazeDS与Spring的集成,...
BlazeDS是一个开源服务器端技术,它允许Flex客户端与Java应用程序服务器之间进行实时的双向通信,实现数据的推送和拉取。这个.war(Web Archive)文件是Java Web应用程序的标准打包格式,可以被部署到任何支持...
BlazeDS支持Remoting和 Messaging,使得Flex应用可以调用Spring服务端的远程方法,实现数据的实时推送。 4. **AMF**:AMF是一种二进制数据格式,用于在Flex客户端和BlazeDS服务之间高效地传输数据。相比于XML或HTTP...
4. **Integration with Server Technologies**: Blazeds可以轻松地与各种服务器技术集成,包括Java EE、Spring、Hibernate、JMS等。 5. **Data Management**: 提供了对数据源的强大管理,包括数据推送、数据缓存和...
BlazeDS是Adobe公司开发的一款开源的服务器端技术,它主要功能是为Flex和AJAX应用提供实时数据推送服务。BlazeDS使得基于Flash Player或Adobe AIR的客户端能够与Java服务器进行双向通信,实现了富互联网应用程序...
综上所述,Blazeds是一款功能强大且高度灵活的服务器组件,它为Flex和Air应用提供了一种高效、安全的数据传输和消息推送机制。通过其RPCService、MessageService和JMS集成等功能,Blazeds不仅简化了客户端与服务器...