熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

使用BEA Workshop Studio的Flex消息傳遞

2013-11-23 19:34:30  來源: Java核心技術 

  摘要
      本教程演示了如何使用Flex LiveCycle Data Services Express (DS)消息傳遞功能在使用BEA Workshop Studio (Flex bundle)的Flex應用程序中實現數據推送我的目標是開發一個小型Flex消息傳遞應用程序發送和接收消息

  Flex消息傳遞簡介

  本教程演示了如何在Flex應用程序中使用消息傳遞消息傳遞可算是相當普通的一個詞但請看 Flex文檔 是怎樣定義這個詞的

  消息傳遞系統允許各應用程序進行對等異步通信方法是通過Message Service收發數據(或消息)包消息通常由消息頭和消息體組成消息頭包含標識符和路由信息消息體包含應用程序數據

  因此我們將構建這樣一個應用程序它允許通過DS消息服務向我們的Flex客戶端應用程序異步發送數據以下是一些主要的DS消息傳遞術語

  生產者創建消息並將它發送到收信方的應用程序
    使用者通過收信方接收消息的應用程序
    消息收信方用於消息發布訂閱和點對點消息傳遞的資源
    消息通道連接生產者使用者與收信方的方法(使用端點)
    消息端點負責消息數據編碼和解碼的接口
    消息適配器用於定義消息傳遞實現其選項包括使用DS或外部Java Message Service (JMS)提供者所提供的ActionScriptAdapter或者
      DS提供了許多有用的特性包括持久的消息隊列安全性和外部消息系統集成DS將部署為WAR文件它可以運行在任何Java EE Servlet容器(像Apache Tomcat或BEA WebLogic)中ActionScriptAdapter消息提供者不要求任何額外的Java EE特性本教程將介紹實現一個非常基本的消息傳遞應用程序的設置和配置

  軟件需求

  本教程使用下列軟件產品構建和運行消息傳遞應用程序

  BEA Workshop Studio / Flex Bundle trial
    Adobe LiveCycle Data Services ES
    Apache Tomcat
      應用程序概述

  在本教程中您將學習如何創建簡單的Flex生產者和使用者客戶端Flex用戶接口運行於Flash Player客戶端而DS是服務器端網關向Flex客戶端應用程序發送消息並接收來自Flex客戶端應用程序的消息

  多個Flex客戶端可以發送和接收來自同一消息隊列的消息生產者用戶接口將允許您向收信方發送消息而使用者的用戶接口將接收創建的消息因此當不含任何用戶輪詢代碼的消息顯示在屏幕上時這就演示了DS的數據推送特性

  圖1給出了源文件一覽具體來說我將重點關注

  servicesconfigxml定義messagingconfigxml文件用法和通道定義
    messagingconfigxml定義收信方和適配器
    flex_clientmxml創建和接收消息的客戶端代碼

  Figure1

  圖1 已完成的應用程序中的消息傳遞文件一覽(單擊放大圖片)

  現在我將介紹如何創建應用程序

  構建應用程序的步驟

  以下內容將介紹Flex項目的創建和應用程序的配置以及應用程序的部署和運行

  設置IDE

  首先下載和安裝軟件需求一節中提到的軟件並啟動BEA Workshop Studio接著導入flexwar文件並創建新的Flex Server項目(此文件隨DS安裝DS的下載鏈接請參見軟件需求一節

  現在選擇File→Import然後選擇WAR文件選項指定隨DS提供的flexwar文件的位置(在windows中默認位置是C:\lcds\flexwar)將Web項目名稱指定為flex_server

  最後選擇Finish

  Figure2

  圖2 從DS導入flexwar文件

  配置Flex Server和應用程序

  接下來我們將配置flex_server消息傳遞應用程序設置消息傳遞服務器端應用程序包括消息通道端點收信方和適配器的配置

  編輯servicesconfigxml文件編輯<services>部分中的serverincludes代碼只在配置中包括messagingconfigxml
    <services>

  <serviceinclude filepath=messagingconfigxml  />

  </services>
    將以下內容添加到<channel>部分此處的配置目標是用於消息收發的消息端點此處創建的mypollingamf通道將提供給messagingconfigxml文件中配置的收信方使用
    <channeldefinition  id=mypollingamf  class=ssagingchannelsAMFChannel>

  <endpoint  uri=//{servername}:{serverport}/{contextroot}/messagebroker/amfpolling

  class=ssagingendpointsAMFEndpoint/>

  <properties>

  <pollingenabled>true</pollingenabled>

  <pollingintervalseconds></pollingintervalseconds>

  </properties>

  </channeldefinition>
      下面是完整的servicesconfigxml文件供您參考

  <?xml version=  encoding=UTF?>

  <servicesconfig>

  <services>

  <serviceinclude  filepath=messagingconfigxml />

  </services>

  <channels>

  <channeldefinition  id=mypollingamf  class=ssagingchannelsAMFChannel>

  <endpoint  uri=//{servername}:{serverport}/{contextroot}/messagebroker/amfpolling

  class=ssagingendpointsAMFEndpoint/>

  <properties>

  <pollingenabled>true</pollingenabled>

  <pollingintervalseconds></pollingintervalseconds>

  </properties>

  </channeldefinition>

  </channels>

  <logging>

  <target  class=ssaginglogConsoleTarget level=Debug>

  <properties>

  <prefix>[Flex]  </prefix>

  <includeDate>true</includeDate>

  <includeTime>true</includeTime>

  <includeLevel>true</includeLevel>

  <includeCategory>false</includeCategory>

  </properties>

  <filters>

  <pattern>Endpoint*</pattern>

  <pattern>Service*</pattern>

  <pattern>Configuration</pattern>

  </filters>

  </target>

  </logging>

  <system>

  <redeploy>

  <enabled>false</enabled>

  </redeploy>

  </system>

  </servicesconfig>
    編輯messagingconfigxml文件以配置simpletopic收信方Flex Client應用程序將會引用它進行收發消息
    更新opening service標記在messageTypes中包括AsyncMessage類
      <service  id=messageservice

  class=ssagingservicesMessageService

  messageTypes=ssagesAsyncMessage>

  </service>
    創建該simpletopic收信方作為一個非持久性主題它將使用上述servicesconfigxml文件定義的mypollingamf通道這是將用來收發消息的消息隊列
      <destination  id=simpletopic>

  <properties>

  <network>

  <sessiontimeout></sessiontimeout>

  <throttleinbound  policy=ERROR maxfrequency=/>

  <throttleoutbound  policy=REPLACE maxfrequency=/>

  </network>

  <server>

  <durable>false</durable>

  </server>

  </properties>

  <channels>

  <channel  ref=mypollingamf/>

  </channels>

  </destination>
 

  下面是完整的messagingconfigxml文件供您參考

  <?xml version=  encoding=UTF?>

  <service  id=messageservice

  class=ssagingservicesMessageService

  messageTypes=ssagesAsyncMessage>

  <adapters>

  <adapterdefinition id=actionscript

  class=ssagingadaptersActionScriptAdapter

  default=true />

  </adapters>

  <destination id=simpletopic>

  <properties>

  <network>

  <sessiontimeout></sessiontimeout>

  <throttleinbound  policy=ERROR maxfrequency=/>

  <throttleoutbound  policy=REPLACE maxfrequency=/>

  </network>

  <server>

  <durable>false</durable>

  </server>

  </properties>

  <channels>

  <channel  ref=mypollingamf/>

  </channels>

  </destination>

  </service>
      創建服務器

  現在我們可以創建運行應用程序的服務器

  選擇File→New→Other
    選擇Server→Server
    選擇Next
    選擇Apache→Tomcat v
    選擇Next

  Figure3

  圖 選擇運行應用程序的服務器

  指定Tomcat的安裝位置並選擇要使用的JRE選擇Next

  Figure4

  圖 指定Tomcat服務器位置

  選擇Available項目列表中的flex_server
    選擇Add將項目添加到Configured項目列表
    選擇Finish

  Figure5

  圖 添加項目到 Configured項目列表

  客戶端應用程序

  現在我們將創建消息傳遞客戶端應用程序

  創建新的Flex Client Project選擇File→New→Project並指定Flex Project然後選擇Next

  Figure6

  圖 在BEA Workshop中創建Flex Project

  指定Flex Data Services選中Compile application on the server when the page is viewed選項然後選擇Next

  Figure7

  圖 配置 Flex Client應用程序數據訪問方式

  更新服務器屬性(Root folderRoot URL和Context root)然後選擇Next

  Figure8

  圖 配置Flex Server信息

  指定flex_client作為Project名稱然後選擇Finish

  Figure9

  圖 編輯project名稱並結束

  現在我們需要創建客戶端更新項目創建的flex_clientmxml頁面如下所示

  <?xml version= encoding=iso?>
    <mx:Application xmlns:mx= xmlns=*
        pageTitle=Flex Messaging Example Application
        creationComplete=mySubscribersubscribe()>

  <! Messaging Declarations >
        <mx:Producer id=myPublisher destination=simpletopic />
        <mx:Consumer id=mySubscriber destination=simpletopic
    message=receiveMessage(event) />

  <! UI Declarations >
        <mx:Panel title=Incoming Messages Panel>
            <mx:TextArea id=output backgroundColor=#eeeeee

  width= height= />
        </mx:Panel>

  <mx:Panel title=Input Panel (type your text and click enter)>
            <mx:TextInput id=input width= enter=sendMessage() />
        </mx:Panel>

  <! EventHandling Script >

  <mx:Script>
            <![CDATA[

  import ssagingeventsMessageEvent;
            import ssagesAsyncMessage;

  private function sendMessage():void
            {
                var msg:AsyncMessage = new AsyncMessage();
                msgbody = inputtext;
                myPublishersend(msg);
                inputtext = ;
            }

  private function receiveMessage(msgEvent:MessageEvent):void
            {
                var msg:AsyncMessage = AsyncMessage(ssage);
                outputtext += msgbody + \n;
            }

  ]]>
        </mx:Script>

  </mx:Application>

  flex_clientmxml中代碼的作用

  mx:Producer標記創建的類用於接收來自simpletopic隊列的消息
    mx:Consumer標記創建的類用於創建simpletopic隊列中的消息
    從收信方收到新的消息時應用程序將調用receiveMesssage(事件)方法該功能將顯示在Incoming Messages Panel的輸出中
    提交輸入消息時應用程序將調用sendMessage()方法每一次被調用時它都會為隊列創建一個新的消息方法是通過使用我們創建的mx:Producer發送該消息至服務器上的simpletopic隊列
    Panel標記創建一個帶有輸入框和顯示區的簡單用戶接口
      運行應用程序

  現在來運行這個應用程序!啟動服務器

  在JEE Perspective中右鍵單擊底部面板中的Tomcat服務器然後選擇Start

  Figure10

  圖 啟動Tomcat服務器


在Flex項目中右鍵單擊flex_clientmxml文件然後選擇Run As→Flex Application

  Figure11

  圖 運行flex_clientmxml頁

  使用應用程序

  要使用應用程序請在Input Panel中輸入您的消息文本然後按下回車鍵這樣消息將被發送到flex_server應用程序中的simpletopic收信方

  Consumer對象mySubscriber將從simpletopic收信方接收消息然後調用receiveMessage函數在Incoming Messages Panel中顯示消息

  Figure12

  圖 Flex Messaging應用程序

  結束語

  您已經構建了一個基本的Flex消息傳遞應用程序它可以使用BEA Workshop Studio收發消息DS可以提供消息傳遞功能並且非常靈活它允許您用極少的代碼或配置實現異步應用程序通信除了能夠使用DS特定的消息傳遞之外DS還支持Flex應用程序參與JMS消息傳遞使異構系統的集成更加方便

  自此您可以參考 文檔 學習更高級的Flex消息傳遞配置和使用方法

  參考資料

  觀看視頻它演示了如何創建應用程序
    Flex主頁
    Adobe Flex開發人員中心
    使用BEA Workshop Studio和Java創建基於Flex的RIA關於Adobe Developer Connection的文章
    Flex消息傳遞文檔
    BEA的Workshop StudioFlex微指令日之前有很大的折扣
      原文出處mel



From:http://tw.wingwit.com/Article/program/Java/hx/201311/27108.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.