본문 바로가기

Flex/__Flex 3.0

[Blazeds] Flex3 AMF Services

flex.messaging.services.RemotingService를 이용해서 서비스를 구현 테스트를 한다.
----------------------------------------------------------------------------------------------
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="member">    
   <properties>     
    <source>flex.member.MemberService</source>    
   </properties>   
 </destination> 
 
</service>

----------------------------------------------------------------------------------------------
web.xml
----------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

    <display-name>BlazeDS</display-name>
    <description>BlazeDS Application</description>

    <!-- 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>
        <display-name>MessageBrokerServlet</display-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>
        <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-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빌더로 가서
mxml파을을 생성한다.
현재 Flex2는 설치시 데이터서비스를 채크하지않아서 Flex2는 테스트 하지못했고
Flex3에서만 테스트 했음.
==========================================================================================

----------------------------------------------------------------------------------------------
RemoteObject.mxml
----------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
 <mx:Script>    
  <![CDATA[    
   import mx.rpc.events.ResultEvent;    
   import mx.rpc.events.FaultEvent;    
   import mx.rpc.remoting.RemoteObject;    
   import mx.controls.Alert;       
   private var startTime:Number;        
   private function resultHandler(event:ResultEvent):void{         
    dg.dataProvider = event.result;    
   }       
    
   private function faultHandler(event:FaultEvent):void{         
    mx.controls.Alert.show(event.fault.message);    
   }       
    
   private function retrieve():void  {    
    var srv:mx.rpc.remoting.RemoteObject = new RemoteObject();    
    srv.destination = "member";        
    startTime = new Date().time;    
    srv.getElements();         
    srv.addEventListener("result",resultHandler);    
    srv.addEventListener("fault",faultHandler);    
   }      
    
   private function logResult():void  {    
    if (startTime > 0)   {     
     log.text = "" + (new Date().time - startTime) + " milliseconds";   
    }   
   }     
  ]]>   
 </mx:Script>     
   
 <mx:Panel title="RemoteObject" width="100%" height="100%">    
  <mx:DataGrid id="dg" width="100%" height="100%" updateComplete="logResult()"/>     
  <mx:ControlBar>      
   <mx:Button label="Data" click="retrieve()"/>     
   <mx:Label id="log"/>     
  </mx:ControlBar>   
 </mx:Panel> 
</mx:Application>