<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Grails中實現遠程rpc

      > Grails中會不可避免的遇到跨平臺/域遠程調用,遠程rpc是最方便的選擇 > > Grails的Remoting 插件 http://grails.org/plugin/remoting 是最好的選擇了,它支持 RMI、Hessian, Burlap, HttpInvoker, XFire協議。 安裝 --- grails install-plugin remoting 服務端實現 --- 我們打算用hessian協議做示例。 1. 定義rpc接口 在 Grails 工程的 `src/java` 目錄下寫好rpc接口,如,我們定一個接口 java: public interface ISynchronizeService { /** * 獲得分類 * @param 客戶端版本 * @return */ Series getSeries(long client_version); /** * 獲得元素 * @param 客戶端版本 * @return */ Item getItems(long client_version); } 這個接口提供了兩個方法,分別獲取不同的數據。 然后再在 `src/java` 目錄下建好所涉及的POJO類。 Series.java java: /** * POJO 分類 */ public class Series implements Serializable { private static final long serialVersionUID = -1666133446403499930L; /** * 分類名稱 */ private String name; /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } public Series() { } } Item.java 略過,同Series.java 這些需要遠程傳輸的POJO必須可以序列化,所以所涉及到的POJO必須實現Serializable接口。 2. 實現rpc services 新建一個Grails services,名字可以隨便取,但必須實現上面定義的接口: java: class SynchronizeService implements ISynchronizeService { //暴露為hessian協議的webservice static expose = ['hessian'] /** * 同步分類 * @param 客戶端版本 * @return */ @Override public Series getSeries(long client_version) { //從數據庫查詢 def sSeries = StoreSeries.findById(1) //組裝pojo def series = new Series() series.setName(sSeries.name) return series; } /** * 同步元素 * @param 客戶端版本 * @return */ @Override public Item getItems(long client_version) { //從數據庫查詢 def sItem = StoreItem.findById(1) //組裝pojo def item = new Item() item.setName(sItem.name) return item; } } 靜態屬性expose用來指定service所暴露的rpc協議,這里我們指定為hessian,當然也可以同時指定多個協議,expose是個List。 客戶端實現 --- 客戶端只要支持hessiani協議,都可以進行遠程調用我們上面的grails服務。 這里我們還是用grails來調用。 1. 導入接口 可以將服務端的 `src/java` 目錄下與rpc相關的java類全部拷貝過來,也可以在服務端生成這幾個java類的jar包,然后再導入過來??傊@些接口必須保證服務端與客戶端是一樣的(類名、方法相同)。 2. 設置遠程rpc service 新建一個grails service,service名必須與服務端的grails service名一致: java: class SynchronizeService { /** * 遠程調用參數 */ static remote = [ protocol: 'hessian', //rpc協議 iface: ISynchronizeService, //接口class名 // 服務端的url地址為 http://localhost:8081/rpcserver host: 'localhost', //遠端地址 port: '8081', //遠端端口 webcontext: 'rpcserver' //webapp的context名稱,即url中的名稱 ] } 這個service只要包含這些東西就行了,其中重要的是設置好`protocol`,還有`host`與`webcontext`這些值。`iface`是接口的類名,要包含報名,如 foo.bar.ISynchronizeService,類加載器必須能找到的。這個service會在grails啟動時自動注入接口相關的代碼。 3. 訪問遠程服務 新建一個controller,并寫一個action: atcion java: def testRpc() { def series = SynchronizeService.syncSeries(1L) render series.getName() } 注意到了沒,接口的方法會被自動注入進service當中,插件會根據協議來在接口中實現相應的代碼。很省事。 當然,客戶端可以是任何支持remoting中支持協議的語言、平臺。如android、ios。

      posted on 2013-01-02 15:27  黑暗伯爵  閱讀(667)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 沐川县| 国产日韩AV免费无码一区二区三区| 一区二区三区不卡国产| 国产精品人成视频免费国产| 国产尤物精品自在拍视频首页 | 日韩福利片午夜免费观着| 周口市| 国产av国片精品一区二区| 亚洲欧美综合中文| 色婷婷亚洲精品综合影院| 国产av日韩精品一区二区| 国产精品XXXX国产喷水| 日本亚洲欧洲无免费码在线| 国产精品成人观看视频国产奇米| 漂亮的人妻不敢呻吟被中出| 久久国产精品成人免费| 中文字幕无码不卡一区二区三区 | 成熟女人特级毛片www免费| 毛片免费观看天天干天天爽| 国产AV巨作丝袜秘书| 无码免费中文字幕视频| 国产成人精品性色av麻豆| 亚洲av成人无码天堂| 亚洲熟妇精品一区二区| 日韩秘 无码一区二区三区 | 日韩在线观看精品亚洲| 国产成人高清精品亚洲| 中文字幕精品亚洲字幕成| a男人的天堂久久a毛片| 久久久久无码中| 性猛交ⅹxxx富婆视频| 午夜福利国产片在线视频| 亚洲欧美日韩成人综合一区| 四虎影视国产精品永久在线| 亚洲精品第一页中文字幕| 久久99日韩国产精品久久99| 大又大又粗又硬又爽少妇毛片| 澄迈县| 色香欲天天影视综合网| 人妻av中文字幕无码专区| 别揉我奶头~嗯~啊~的视频|