hyljava

          Remote Object Service

          Remote Object Service
          對于主流的Flex數據服務器,目前都支持AMF3/RemoteObject,今天我們就來談一談BlazeDS的遠程服務。

          1. 編寫遠程服務類

          編寫BlazeDS的Java遠程服務類有三個要求:

          1) 所有被調用的方法必須是public;

          2) 所有的編譯類必須能夠通過BlazeDS的classpath訪問得到;

          3) 類必須是stateful/stateless的。

          大家可以參考工程文件中的SimpleService.java。

          2. 配置remoting-config.xml

          Java服務類寫好后,還需要配置,BlazeDS的Remote Service也是在服務器端對應了一個配置文件:remoting-config.xml,配置好Remote Service 后,Flex在運行時才能找到相應的服務類并調用其方法。下面就是本工程的Remote Service配置文件。

          配置文件

          第2~3行指定服務的ID和對應的類,第5~7行設置適配器(adapters)的ID和對應的類。第9~11行指定默認的通道(channels)及其參照,該通道是在 services-config.xml中定義的。適配器和通道可以設置多個,采用第一個優先的原則。前面這幾項設置適用于proxy-config.xml、remoting-config.xml和我們后面要講的 messaging-config.xml。

          第13~18行設置的服務終端(destination),該屬性必須和RemoteObject組件的服務終端屬性一致。按照服務的種類,服務終端又可以分為代理服務終端、遠程服務終端和消息服務終端。上一次講述的代理服務終端,需要指定該終端的url,而這次我們講述的遠程服務終端,需要指定該目標的source和scope。source對應 RemoteObject要調用的遠程服務的全限定類名,不像FluorineFX,它不能在RemoteObject組件中指定。scope表示當前遠程服務的作用范圍,即遠程服務類是stateful還是stateless,有application、session和request三個選項。

          注意:我們提倡在配置文件中設置,這樣更安全也方便后期維護。

          3. 使用RemoteObjec組件

          對于RemoteObjec組件,請參看
          下面的Flex RemoteObject類參考相關內容。一句話,Flex的RemoteObject與后臺語言是無關的。在工程文件中的BasicRemoteObject.mxml,調用了SimpleService類的三個方法,當通過BlazeDS從J2EE服務器返回RemoteObjec時,Java數據被序列化成ActionScript數據。其中Java字符串對應ActionScript字符串,Java的數組列表對應ActionScript ArrayCollection。


          Flex RemoteObject類參考


          <mx:RemoteObject>標記允許使用AMF3訪問遠程服務類的方法,要知道在Flex中怎樣使用Flash Remoting訪問數據,應該先了解一下RemoteObject類。

          要知道在Flex中怎樣使用Flash Remoting訪問數據,應該先了解一下RemoteObject類。

          包 mx.rpc.remoting 類 public dynamic class RemoteObject 
          繼承 RemoteObject → AbstractService → Proxy → Object 
          子類 RemoteObject

          一、<mx:RemoteObject>標記

          它允許使用AMF3訪問遠程服務類的方法。

          1. <mx:RemoteObject>允許的標記屬性有:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          <mx:RemoteObject
            Properties
            concurrency="multiple|single|last"
            destination="No default."
            id="No default."
            endpoint="No default."
            showBusyCursor="false|true"
            source="No default." (currently, Macromedia ColdFusion only)
            makeObjectsBindable="false|true"
            事件
            fault="No default."
            result="No default."  
           />

          2. <mx:RemoteObject>標記可以包含多個 <mx:method> 標記,<mx:method>允許的標記屬性有:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          <mx:method
            Properties
            concurrency="multiple|single|last"
            name="No default, required."
            makeObjectsBindable="false|true"       
           事件
            fault="No default."
            result="No default."
           />

          3. <mx:RemoteObject>標記可以也只能包含一個<mx:arguments> 子標記,該子標記是一個序列數組對象。

          二、公有屬性

          1. concurrency : String

          表示對同一服務怎樣進行多次調用。類似于XMLConnector/WebServiceConnector/RemotingConnector的multipleSimultaneousAllowed屬性。它的默認值為multiple,允許下列值:

          • Multiple:同一時間可以執行多個請求。已有的請求不會被取消;
          • Single:同一時間調用只能執行一個請求,多個請求會報錯;
          • Last:最后一次請求會覆蓋已有的請求。

          2. endpoint: String

          允許開發人員快速為RemoteObject destination(目標)指定endpoint(端點)。而該destination既沒有在編譯時,也沒有在用代碼新建ChannelSet(通道集)時參照services-config.xml。如果設定了該屬性,它會覆蓋已有的ChannelSet。

          如果endpoint 的url 以“https”開關,將使用 SecureAMFChannel, 否則使用普通的AMFChannel。{server.name}和{server.port}標記,可以用在endpoint的url中,表明Channel應該使用用來加載SWF文件的服務名稱和端口。

          3. showBusyCursor:Boolean

          表示服務正在執行時是否顯示一個表示忙碌的鼠標指針。

          三、公有方法

          1. RemoteObject () 構造方法

          創建一個新的RemoteObject對象。

          參數

          destination:String (默認為 null) —RemoteObject 的destination屬性必須匹配 services-config.xml 中的destination的ID屬性值。

          2. initialized ()

          public function initialized(document:Object, id:String):void

          只要設定RemoteObject標記就會通過MXML編譯器自動調用該方法。如果使用ActionScrip新建RemoteObject實例,則可以自行調用該方法,這對驗證其參數很有用。

          參數

          • document:Object —RemoteObject 所在的MXML文檔
          • id:String —RemoteObjec在上述文檔中的ID

          posted on 2013-01-20 22:46 何云隆 閱讀(1573) 評論(0)  編輯  收藏 所屬分類: Flex


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 乐至县| 岫岩| 即墨市| 渭南市| 凌源市| 古丈县| 正安县| 岳阳市| 信宜市| 兴山县| 长兴县| 丰顺县| 崇明县| 买车| 若尔盖县| 南康市| 阿拉尔市| 怀化市| 鄂托克前旗| 温泉县| 松滋市| 伊通| 秭归县| 拉萨市| 铜川市| 平谷区| 怀远县| 沙洋县| 孟州市| 卢氏县| 宜昌市| 凌云县| 马山县| 邹城市| 平顶山市| 沈阳市| 镇原县| 衡山县| 漠河县| 汶川县| 祁门县|