樂在其中

          以JEE為主攻,以Flex為點綴,以Eclipse RCP為樂趣
          請訪問http://www.inframesh.org

          首頁 新隨筆 聯系 管理
            43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

          OpenAMF openamf-config.xml 配置
          第一個標簽
          <amf-serializer>
          <force-lower-case-keys>false</force-lower-case-keys>
          </amf-serializer>
          這個標簽的存在的意義在于當openamf發送傳遞給Flash 客戶端的AMF消息時,是否把用來返回自定義類的Hashmap里面的key轉換成小寫。
          一邊情況下,當我們發送一個hashmap給客戶端時,客戶端把它當作一個custom class的object來對待。
          比如你有一個java方法返回一個hashmap
          public Hashmap getValue(){
          Hashmap resultObj=new Hashmap();
          result.put("nameSpace","com.flashseer.org");
          return resultObj;
          }
          在actionscript中你可以用
          resultObj.nameSpace
          的寫法來引用java里面hashmap中的一個值。
          當你把這個標簽的屬性設置為true的時候,返回給Flash client的object中,所有的key都被轉換成小寫。
          所以,如果你使用Actionscript2.0的時候,因為AS2區分大小寫。你就不可能用resultObj.nameSpace來引用了。
          因為,nameSpace已經被轉換為小寫了。你必須使用namespace來引用。
          這里,官方的example里面注釋說了,
          如果你用actionscrpt2.0的話,把這個設置為false。否則,如果你用了大寫的字母作為key,在客戶端就會出問題。
          如果你用as1的話,可以設置為true
          第二個標簽
          <invoker>
          <name>Java</name>
          <class>org.openamf.invoker.JavaServiceInvoker</class>
          </invoker>
          這個標簽是用來調用java端的服務的。
          這里,提供了許多的invoker供你使用。
          放在這里的是最常用的一個invoker。這個invoker的作用就是根據service的位置在classpath里面找到這個class,并且調用其中的方法。
          另外,還可以使用其他的invoker,
          比如EJB,Spring,WebService都是非常實用的invoker.
          按照需要,放置這些invoker.
          可以在example的配置文件里找到所有的invoker
          第三個標簽:自定義類的映射
          <custom-class-mapping>
          <java-class>org.openamf.examples.Person</java-class>
          <custom-class>org.openamf.examples.Person</custom-class>
          </custom-class-mapping>
          這個映射的作用是讓你的FlashClient接收到正確的類型。
          比如,在flashclient端,你調用一個方法后,接收到一個resultObj
          如果你不進行類型映射,那么,這個resultObj是沒有類型的。他就是一個object.你無法使用這個object的方法,只能通過引用屬性的方法引用到屬性。
          但是,如果你在這里做了映射,在flash里面就可以得到一個具有類型的object。
          用 trace(resultObj instanceof org.openamf.examples.Person) 就可以看到效果。
          這個標簽可以重復,映射多個自定義class
          第四個標簽:命名你的service(注意,這個部分需要使用advancedGateway)
          <service>
                        <!--name這個 node定義一下你的service的名字,這樣,你就不用在flash里面把你的整個class都寫在里面了,而只需要用這個name來代替-->
          <name>Directory</name>
          <!--這個標簽的作用其實就是讓你指定你上面定義的那個name對應哪個class。-->
          <service-location>org.flashseer.Example</service-location>
          <!---這個標簽 同上面的invoker標簽對應,這樣,一旦advancedGateway發現了你定義的這個service,就不用遍歷所有的invoker來查找相應的服務。
          注意如果你沒有定義這個的話,默認情況下,openamf會給所有可能的class打一個分,取分最高的來調用--->
          <invoker-ref>Java</invoker-ref>
          <!--這里定義一下需要call的方法-->
          <method>
          <!-- 方法名 -->
          <name>addPerson</name>
          <!--參數定義,這里的參數可以使用一個class的名字或者使用通配符,
          *就代表許多個參數,?代表一個參數-->
          <parameter>
          <type>*</type>
          </parameter>
          <!-- 這個result-filter實際上是可以自己來寫實現的。實現org.openamf.filter.ResultFilter即可
          其中,class標簽中,是你需要使用的filter。 你可以使用兩個由openamf提供的filter,也可以自己來實現。
          其中parameter的兩個標簽其實就是一個自定義的object,你可以自己隨便定義然后,在實現filter的時候來使用。
                -->
          <result-filter>
          <class>org.openamf.filter.BeanListToRecordSet</class>
          <parameter>
          <name>ignore</name>
          <value>extraInfo</value>
          </parameter>
          </result-filter>
          </method>
          </service>
          這個標簽的意義在于它可以幫助你更快,更方便的找到flash remoting說調用的service.前面也提到了,如果你不指定的話,可能會導致每次openamf都要去做match,計算匹配值,然后取高的。

          posted on 2008-12-26 11:38 suprasoft Inc,. 閱讀(961) 評論(0)  編輯  收藏 所屬分類: RIA/Flex

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


          網站導航:
           
          ©2005-2008 Suprasoft Inc., All right reserved.
          主站蜘蛛池模板: 怀柔区| 清涧县| 民勤县| 云林县| 寻乌县| 类乌齐县| 当雄县| 台中县| 东乡县| 淄博市| 伊金霍洛旗| 鄂伦春自治旗| 正镶白旗| 博野县| 巫溪县| 泰州市| 西贡区| 石首市| 文水县| 古丈县| 乌兰县| 金溪县| 枣阳市| 彰化市| 邢台市| 东源县| 乌审旗| 高密市| 甘肃省| 林西县| 奉新县| 枝江市| 富民县| 伊宁市| 临洮县| 津市市| 阿拉尔市| 息烽县| 渑池县| 射阳县| 莒南县|