我是直接用TOMCAT下的blazeds.war 解压的blazeds文件夹作的消息转发通道.所以直接修改了D:/apache-tomcat-6.0.16/webapps/blazeds/WEB-INF/flex下的services-config.xml文件和messaging-config.xml文件
services-config.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service-include file-path="remoting-config.xml" />
<service-include file-path="proxy-config.xml" />
<service-include file-path="messaging-config.xml" />
</services>
<security>
<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
<!-- Uncomment the correct app server
<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
<login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/>
<login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/>
<login-command class="flex.messaging.security.WebSphereLoginCommand" server="WebSphere"/>
-->
<!--
<security-constraint id="basic-read-access">
<auth-method>Basic</auth-method>
<roles>
<role>guests</role>
<role>accountants</role>
<role>employees</role>
<role>managers</role>
</roles>
</security-constraint>
-->
</security>
<channels>
<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"/>
</channel-definition>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
<channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>true</polling-enabled>
<polling-interval-seconds>1</polling-interval-seconds>
</properties>
</channel-definition>
<!--
<channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
</channel-definition>
<channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel">
<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/>
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
-->
</channels>
<logging>
<target class="flex.messaging.log.ConsoleTarget" level="Error">
<properties>
<prefix>[BlazeDS] </prefix>
<includeDate>false</includeDate>
<includeTime>false</includeTime>
<includeLevel>false</includeLevel>
<includeCategory>false</includeCategory>
</properties>
<filters>
<pattern>Endpoint.*</pattern>
<pattern>Service.*</pattern>
<pattern>Configuration</pattern>
</filters>
</target>
</logging>
<system>
<redeploy>
<enabled>false</enabled>
<!--
<watch-interval>20</watch-interval>
<watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>
<watch-file>{context.root}/WEB-INF/flex/data-management-config.xml</watch-file>
<touch-file>{context.root}/WEB-INF/web.xml</touch-file>
-->
</redeploy>
</system>
</services-config>
messaging-config.xml内容如下
<?xml version="1.0" encoding="UTF-8"?>
<service id="message-service"
class="flex.messaging.services.MessageService">
<adapters>
<adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" />
<!-- <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/> -->
</adapters>
<default-channels>
<channel ref="my-polling-amf"/>
</default-channels>
<destination id="MessagingDestination" channels="my-polling-amf"/>
</service>
编译参数如下:
-locale en_US -context-root "/blazeds" -services "D:/apache-tomcat-6.0.16/webapps/blazeds/WEB-INF/flex/services-config.xml"
编译路径如下:
output:D:/apache-tomcat-6.0.16/webapps/blazeds
url:http://192.168.1.111:8080/blazeds
测试代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Label x="47" y="134" text="消息文字:" width="64"/>
<mx:TextInput x="119" y="132" width="267" id="txt_msg"/>
<mx:Button x="394" y="130" label="发送" fontWeight="normal" fontSize="12" width="71" click="sendMsg()"/>
<mx:Producer id="producer" destination="MessagingDestination"/>
<mx:Script>
<![CDATA[
import mx.messaging.Producer;
import mx.utils.UIDUtil;
import mx.messaging.Consumer;
import mx.controls.Alert;
import mx.messaging.events.MessageEvent;
import mx.messaging.messages.AsyncMessage;
private var consumer:Consumer //消费者
private var machineName:String;
// 初始化
private function init():void{
machineName = UIDUtil.createUID();
consumer = new Consumer();
consumer.destination = "MessagingDestination";
consumer.selector = "machineName <>'"+machineName+"'";
consumer.addEventListener(MessageEvent.MESSAGE,receiveMsg);
consumer.subscribe();
}
private function sendMsg():void{
var message:AsyncMessage = new AsyncMessage();
message.headers["machineName"] = machineName;
message.body=txt_msg.text;
producer.send(message);
}
private function receiveMsg(evt:MessageEvent):void{
var msg:AsyncMessage=new AsyncMessage(evt.message);
Alert.show(msg.body.toString());
}
]]>
</mx:Script>
</mx:Application>
OK,照我的来,保证没问题