?
这个demo 是flex 和 java 结合使用的,即新建一个flex 项目,再添加web支持,目录如下
四个文件 :
①fx.mxml
? <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"
????? xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
??<mx:RemoteObject id="remoteob" destination="helloword" endpoint="http://localhost/fx/messagebroker/amf" result="resultHandler(event)" fault="faultHandler(event)">
???
??</mx:RemoteObject>
?</fx:Declarations>
?<fx:Script>
??<![CDATA[
???import mx.controls.Alert;
???import mx.rpc.events.FaultEvent;
???import mx.rpc.events.ResultEvent;
???
???private function resultHandler(event:ResultEvent):void{
????Alert.show(event.result.toString(),"成功!");
???}
???private function faultHandler(event:FaultEvent):void{
????Alert.show(event.fault.toString(),"失败!");
???}
??]]>
?</fx:Script>
?
?<s:Button? label="发送" click="remoteob.sayHi()" x="300" y="200"/>
</s:Application>
②HelloWord.java
package com.java;
public class HelloWord {
?public String sayHi(){
??return "hello kitty !!!";
?}
}
③remoting-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
??? class="flex.messaging.services.RemotingService">
??? <adapters>
??????? <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
??? </adapters>
??? <default-channels>
??????? <channel ref="my-amf"/>
??? </default-channels>
?<destination id="helloword" >
????????? <properties>
?????????? <source>com.java.HelloWord</source>
????????? </properties>
??? </destination>
</service>
④web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
?
?<!-- Http Flex Session attribute and binding listener support -->
?<listener>
??<listener-class>flex.messaging.HttpFlexSession</listener-class>
?</listener>
?<!-- MessageBroker Servlet -->
?<servlet>
??<servlet-name>MessageBrokerServlet</servlet-name>
??<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
??<init-param>
???<param-name>services.configuration.file</param-name>
???<param-value>/WEB-INF/flex/services-config.xml</param-value>
??</init-param>
??<!--<init-param>
???<param-name>flex.write.path</param-name>
???<param-value>/WEB-INF/flex</param-value>
??</init-param>
??--><load-on-startup>1</load-on-startup>
?</servlet>
?<servlet-mapping>
??<servlet-name>MessageBrokerServlet</servlet-name>
??<url-pattern>/messagebroker/*</url-pattern>
?</servlet-mapping>
? <welcome-file-list>
??? <welcome-file>index.html</welcome-file>
??? <welcome-file>index.htm</welcome-file>
??? <welcome-file>index.jsp</welcome-file>
??? <welcome-file>default.html</welcome-file>
??? <welcome-file>default.htm</welcome-file>
??? <welcome-file>default.jsp</welcome-file>
? </welcome-file-list>
?<!-- for WebSphere deployment,please uncomment -->
?<!--
??<resource-ref>
??<description>Flex Messaging WorkManager</description>
??<res-ref-name>wm/MessagingWorkManager</res-ref-name>
??<res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
??<res-auth>Container</res-auth>
??<res-sharing-scope>Shareable</res-sharing-scope>
?</resource-ref>
?-->
</web-app>
flex 服务配置如图:
?
?
注:fx.mxml 还可以修改为:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
????? xmlns:s="library://ns.adobe.com/flex/spark"
????? xmlns:mx="library://ns.adobe.com/flex/mx"
????? minWidth="955" minHeight="600">
?
?<fx:Script>
??<![CDATA[
???import mx.controls.Alert;
???import mx.rpc.events.FaultEvent;
???import mx.rpc.events.ResultEvent;
???
???protected function show():void
???{
????// TODO Auto-generated method stub
????var myva :String = myname.text;
????StuServices.addEventListener(FaultEvent.FAULT,faultHandler);
????StuServices.addEventListener(ResultEvent.RESULT,resultHandler);
????StuServices.sayHI(myva);
???}
???
???protected function resultHandler(event:ResultEvent):void
???{
????// TODO Auto-generated method stub
????Alert.show(event.result.toString(),"成功");
???}
???
???protected function faultHandler(event:FaultEvent):void
???{
????// TODO Auto-generated method stub
????trace(event);
???}
???
??]]>
?</fx:Script>
?
?<fx:Declarations>
??<!-- 将非可视元素(例如服务、值对象)放在此处 -->
??<mx:RemoteObject id="StuServices" destination="StuServices"
?????? endpoint="http://localhost/te/messagebroker/amf" > ??? ??</mx:RemoteObject> ?</fx:Declarations> ?<mx:Panel x="200" y="200" width="300" height="300" accentColor="blue"> ??<mx:TextInput id="myname" width="100"> ??? ??</mx:TextInput> ??<mx:Button x="150" y="150" label="哈 哈" click="show()"> ??? ??</mx:Button> ?</mx:Panel> </s:Application>