<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jhonney的專欄

       ----人見人愛
    隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
    數(shù)據(jù)加載中……

    Lingo介紹

    在上一篇文章(Spring和Message Bean的整合)中,我們介紹了如何在Spring中整合Message Bean,這雖然是一個非常簡單的方法,但是Message的使用始終有一定的局限性。我們知道軟件的設計應該盡量面向對象,而MQ是面向數(shù)據(jù)的,而不是面向對象的,如果能夠在設計中介入異步方法那將比Message更加方便,更加利于理解。Lingo就是為了解決這樣的問題而誕生的。

    Lingo是一個輕量級消息開發(fā)包,它基于Spring的Remoting機制并對JMS做了擴展,支持消息的同步或異步傳遞。Lingo非常高效,在線程、連接、會話和事務處理等方面都做了很好的處理,在服務器端可以和JCA整合起來,更加方便。在一定程度上,Lingo和微軟的Indigo和JSR 181類似,都允許同步和異步函數(shù)調用,同時支持對POJO的綁定,簡化對遠程服務的調用。當前Lingo只支持JMS的實現(xiàn),在以后將實現(xiàn)更多的遠程協(xié)議,如web service等。注:CRISPY是另一款遠程調用框架,實現(xiàn)的目標同樣如此,目前一直支持多種協(xié)議。

    講了這么多,讓我們看看如何將上一篇文章中的MDP轉換為異步方法調用。首先我們需要先下載Lingo,你可以通過 http://lingo.codehaus.org 下載。因為是異步調用,這里同樣需要MQ的支持,我們采用ActiveMQ,同時以Embed模式運行。

    首先創(chuàng)建一個服務接口,然后實現(xiàn)該接口。在Lingo中,返回值為void類型,且不拋出任何異常的函數(shù)方法才可以為異步函數(shù)(還需要聲明),其他都為同步函數(shù),這里我們要實現(xiàn)一個異步調用函數(shù),就是一個簡單的方法 public void sayHello(String name)。

    接下來我們要將服務的實現(xiàn)和MQ的Queue或Topic關聯(lián)起來,這里我們只需調用Lingo的JmsServiceExporter將服務發(fā)布出來,我們將這些信息寫在applicationContext_lingo_service.xml文件中,然后通過Spring的配置文件使其生效。我們編寫了一個普通的java類,運行該程序就可以實現(xiàn)異步調用的服務器端。


    public class StartMQFromSpring
    {
    public static void main(String[] args)
    {
    new ClassPathXmlApplicationContext( new String[]
    {
    "/applicationContext_lingo_service.xml"}
    );
    }
    }

    接下來創(chuàng)建一個異步調用的客戶端,這里我們在applicationContext_lingo_client.xml中進行設定,然后通過一個Spring的測試用例完成客戶端的模擬操作。


    public class SpringLingoTest extends AbstractDependencyInjectionSpringContextTests
    {
    protected String[] getConfigLocations()
    {
    return new String[]{"classpath*:applicationContext_lingo_client.xml"};
    }
    public void testAsyncronizeInvoke() throws Exception
    {
    HelloService service = (HelloService) applicationContext.getBean("client"); service.sayHello("jacky");
    }
    }

    最后讓我們運行測試,首先運行StartMQFromSpring,然后運行SpringLingoTest測試用例,這樣就可以實現(xiàn)一個異步方法調用的例子。

    總結:MDP和異步方法調用都是異步調用非常好的方法,但是異步方法調用對OO設計更加有幫助,而Message Bean則面向數(shù)據(jù),這兩者可自行選擇。和Spring整合,更加方便地實現(xiàn)方法的異步調用,可以讓你的設計更加簡潔。

    posted on 2007-06-20 02:38 Jhonney 閱讀(502) 評論(0)  編輯  收藏


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲成人免费电影| 亚洲精品亚洲人成在线播放| jzzijzzij在线观看亚洲熟妇| 在线看片v免费观看视频777| 亚洲无限乱码一二三四区| 日韩精品无码免费一区二区三区 | 免费一级全黄少妇性色生活片| 日本一道本高清免费| 欧美激情综合亚洲一二区| 免费国内精品久久久久影院| 一级做a毛片免费视频| 中文字幕精品无码亚洲字| 中文无码日韩欧免费视频| 亚洲精品视频在线| 亚洲一区在线免费观看| 亚洲а∨天堂久久精品9966| 热久久精品免费视频| 亚美影视免费在线观看| 亚洲AV中文无码乱人伦下载 | 日本亚洲免费无线码| 亚洲乱色伦图片区小说| 免费一区二区三区四区五区| 国产黄色免费观看| 亚洲欧洲在线观看| 成全影视免费观看大全二| 污污免费在线观看| 亚洲四虎永久在线播放| 免费黄网在线观看| 怡红院免费的全部视频| 亚洲va无码专区国产乱码| 中国亚洲女人69内射少妇| 又黄又爽的视频免费看| 一本色道久久88亚洲综合| 亚洲黄色免费在线观看| 亚洲字幕在线观看| 免费A级毛片无码久久版| 久久久久久国产精品免费无码 | 日韩中文字幕在线免费观看| WWW国产成人免费观看视频| 亚洲国产精品成人久久久| 免费一级做a爰片性色毛片|