`

flex _blazeds之动态配置message

阅读更多
api说的继承这个就可以。基本是官方的例子
package RuntimeConfig;

import flex.messaging.MessageBroker;
import flex.messaging.MessageDestination;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.AbstractBootstrapService;
import flex.messaging.services.MessageService;

public class RuntimeConfigMessage extends AbstractBootstrapService {

	@Override
	public void initialize(String arg0, ConfigMap arg1) {
		
		System.out.println("serviceId"+arg0);//runtime-message
		//service-config.xml
		//<service class="RuntimeConfig.RuntimeConfigMessage" id="runtime-message" /> 
		
		String service="message-service";
		
		MessageBroker mb=getMessageBroker();
		
		MessageService ms=(MessageService) mb.getService(service);
		
		ms.registerAdapter("testAdapter", "adapter.MessageAdapter");
		ms.registerAdapter("test2", "adapter.MessageAdapter2");
		ms.setDefaultAdapter("testAdapter");//设置缺省的apdapter,否则registerAdapter没用
		MessageDestination md=(MessageDestination) ms.createDestination("testRuntimeConfig");
		//md.setAdapter(md.createAdapter("test2"));这样会把上边ms.setDefaultAdapter替换掉
		//会用MessageAdapter2来处理消息,所以处理消息时,会用MessageAdapter2来处理
		
		if(ms.isStarted()){
			md.start();
		}

	}

	@Override
	public void start() {
		

	}

	@Override
	public void stop() {
		

	}

}

 

package adapter;

import flex.messaging.messages.Message;
import flex.messaging.services.messaging.adapters.ActionScriptAdapter;
import flex.messaging.services.remoting.adapters.JavaAdapter;

public class MessageAdapter extends ActionScriptAdapter {
	 
	 public MessageAdapter(){
		super();
		System.out.println("实例化次数");//只有一次
	}
	@Override
	public Object invoke(Message message) {
		super.invoke(message);
		System.out.println("invoke message");//一定要setDefaultAdapter
		
		return null;
	}
}

 

package adapter;


import flex.messaging.messages.Message;
import flex.messaging.services.messaging.adapters.ActionScriptAdapter;

public class MessageAdapter2 extends ActionScriptAdapter {
	public MessageAdapter2() {
		super();
		System.out.println("instance");//只有一次
	}
	@Override
	public Object invoke(Message message) {
		super.invoke(message);
		System.out.println("invoke 2 Message");
		return null;
	}
	
}

 

<services-config>

    <services>
        <service-include file-path="remoting-config.xml" />
        <service-include file-path="proxy-config.xml" />
        <service-include file-path="messaging-config.xml" />
       //注意下边这个
 <service class="RuntimeConfig.RuntimeConfigMessage" id="runtime-message" />     
    </services>

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
	<mx:Producer id="producer" channelSet="{sets}">
		<mx:fault>
			<![CDATA[
				Alert.show(event.message+"producer");
			]]>
		</mx:fault>
		<mx:destination>testRuntimeConfig</mx:destination>
	</mx:Producer>
	<mx:Consumer id="consumer" channelSet="{sets}">
		<mx:fault>
			<![CDATA[
				Alert.show("consumer"+event.message);
			]]>
		</mx:fault>
		<mx:message>
			<![CDATA[
				ta.text+=ta.text+"receive";
			]]>
		</mx:message>
		
		<mx:destination>testRuntimeConfig</mx:destination>
	</mx:Consumer>
	
	<mx:ChannelSet id="sets">
		<mx:AMFChannel uri="messagebroker/amfpolling">
			
		</mx:AMFChannel>
		<mx:StreamingAMFChannel uri="messagebroker/streamingamf">
			
		</mx:StreamingAMFChannel>
	</mx:ChannelSet>
	<mx:Script>
		<![CDATA[
			import mx.messaging.messages.AsyncMessage;
			import mx.controls.Alert;
			private function init():void{
				consumer.subscribe();
			}
		]]>
	</mx:Script>
	<mx:VBox>
		<mx:TextArea id="ta">
		
		</mx:TextArea>
		<mx:Button>
			<mx:click>
				<![CDATA[
					var message:AsyncMessage=new AsyncMessage;
					message.body=ta.text;
					producer.send(message);
				]]>
			</mx:click>
		</mx:Button>
	</mx:VBox>
	
</mx:Application>

 

package RuntimeConfig;

import flex.messaging.MessageBroker;
import flex.messaging.MessageDestination;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.AbstractBootstrapService;
import flex.messaging.services.MessageService;

public class RuntimeConfigMessage extends AbstractBootstrapService {

	@Override
	public void initialize(String arg0, ConfigMap arg1) {
		
		System.out.println("serviceId"+arg0);//runtime-message
		//service-config.xml
		// 
		
		String service="message-service";
		
		MessageBroker mb=getMessageBroker();
		
		MessageService ms=(MessageService) mb.getService(service);
		
		ms.registerAdapter("testAdapter", "adapter.MessageAdapter");
		ms.registerAdapter("test2", "adapter.MessageAdapter2");
		ms.setDefaultAdapter("testAdapter");//设置缺省的apdapter,否则registerAdapter没用
		MessageDestination md=(MessageDestination) ms.createDestination("testRuntimeConfig");
		//md.setAdapter(md.createAdapter("test2"));这样会把上边ms.setDefaultAdapter替换掉
		//会用MessageAdapter2来处理消息,所以处理消息时,会用MessageAdapter2来处理
		
		if(ms.isStarted()){
			md.start();
		}

	}

	@Override
	public void start() {
		

	}

	@Override
	public void stop() {
		

	}

}

分享到:
评论

相关推荐

    FLEX_JAVA_BlazeDS独立部署DEMO.rar

    7. **部署配置**:在独立部署中,需要配置Flex客户端的URL以指向BlazeDS服务,同时要在服务器端设置相应的频道和服务来处理客户端请求。 8. **安全考虑**:视频通话系统需要考虑数据加密、身份验证和访问控制,以...

    flex-src.zip_blazeds_blazeds src download_blazeds-bin-4._flex_tr

    BlazeDS使得基于Flex的客户端应用可以方便地与Java后端进行数据交互,支持AMF(Action Message Format)协议,提高了数据传输效率和性能。在本压缩包文件“flex-src.zip”中,包含了BlazeDS的源代码及相关项目,这...

    MyEclipse_8.5+flex_4+Blazeds配置

    在本文中,我们将详细讨论如何在MyEclipse 8.5环境下配置Flex 4和Blazeds,以便实现高效的富互联网应用(RIA)开发。这个过程涉及多个步骤,包括JDK的安装和环境变量配置、Apache Tomcat服务器的安装、MyEclipse的...

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

    BlazeDS是Adobe提供的一个开源项目,它为Java服务器和Flex客户端之间的数据交换提供了丰富的功能,包括Remoting、MessageBroker和LiveCycle Data Services的部分功能。在本场景中,我们将探讨如何利用BlazeDS和Flex...

    flex+blazeDS配置指南

    《Flex+BlazeDS配置详解》 在现代Web开发中,富互联网应用程序(RIA)的交互性和用户体验成为了关键。Flex作为Adobe开发的RIA框架,以其强大的图形界面设计和丰富的交互功能受到广泛欢迎。而BlazeDS是Adobe提供的一...

    Blazeds_Flex_Java.rar_flex

    5. **Blazeds_Flex_Java.ppt**:这个PPT文件很可能是关于Blazeds与Flex集成的详细教程,涵盖了如何配置Blazeds项目、如何创建Flex客户端、如何设置Java服务以及如何调试和优化通信过程等内容。通过深入学习这份文档...

    Flex-Spring-JAVA-BLAZEDS.rar_Flex spring_flex_flex java

    这种整合允许开发者利用Flex的富客户端能力,Spring的后端服务管理,以及BlazeDS的数据同步功能,创建出高效、动态且具有复杂交互的Web应用。 在实际项目中,Flex作为前端,可以创建丰富的用户体验,而Spring则负责...

    Blazeds_Flex_Java_new

    ### Blazeds_Flex_Java_new:构建高效Web应用的技术栈 #### 一、为什么选择Flex + BlazeDS + Java? Flex、BlazeDS 和 Java 的组合为企业级Web应用提供了强大的支持,尤其对于需要高性能和丰富用户界面的应用场景...

    WEB项目-集成Flex3_BlazeDS3[1].2_Spring2.5.6_iBatis2.3.4_Struts2.1.8

    这个项目可能包含了一系列配置文件(如Spring的bean配置、Struts 2的配置、BlazeDS的配置等)、Action类(Struts 2的业务逻辑组件)、Service和DAO接口及其实现(Spring管理的业务层和数据访问层)、以及Flex的MXML...

    flex+blazeds+spring

    BlazeDS作为中间层,它提供了AMF(Action Message Format)协议,使Flex能够与Spring管理的Java对象进行高效的数据交换。Spring作为业务逻辑和数据访问层,处理所有后台任务,如数据库操作、业务规则管理和服务调用...

    Flex_LCDS_Java.rar_flex_flex java

    2. **LCDS配置**:如何在Java应用服务器(如Tomcat、JBoss)上部署LCDS,配置Flex与Java的连接。 3. **数据服务**:学习如何使用LCDS的AMF通道实现Flex与Java之间的数据交换,包括数据的获取、发送和实时更新。 4. *...

    MyEclipse_8_5_flex4+Blazeds配置例子和blazeds下载

    【MyEclipse_8_5_flex4+Blazeds配置例子和blazeds下载】是一个关于集成开发环境MyEclipse 8.5与Adobe的BlazeDS集成使用的教程资源包,包含了配置文档和示例代码,以及BlazeDS的下载链接。这个资源对于开发者来说是...

    EmployeeManager.zip_LCDS Flex_flex_flex LC_flex lcds

    2. **LCDS详解**:LCDS是Adobe LiveCycle的一部分,它为Flex应用程序提供了高效的数据服务,如AMF(Action Message Format)数据传输、 BlazeDS集成、实时数据推送等。在EmployeeManager中,LCDS可能被用来实现实时...

Global site tag (gtag.js) - Google Analytics