电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

使用BEA Workshop Studio的Flex消息传递


发布日期:2019/3/29
 

摘要

本教程演示了如何使用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创建和接收消息的客户端代码

图1 已完成的应用程序中的消息传递文件一览(单击放大图片)

现在我将介绍如何创建应用程序

构建应用程序的步骤

以下内容将介绍Flex项目的创建和应用程序的配置以及应用程序的部署和运行

设置IDE

首先下载和安装软件需求一节中提到的软件并启动BEA Workshop Studio接着导入flexwar文件并创建新的Flex Server项目(此文件随DS安装DS的下载链接请参见软件需求一节

现在选择File→Import然后选择WAR文件选项指定随DS提供的flexwar文件的位置(在windows中默认位置是C:\lcds\flexwar)将Web项目名称指定为flex_server

最后选择Finish

图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

选择运行应用程序的服务器

指定Tomcat的安装位置并选择要使用的JRE选择Next

指定Tomcat服务器位置

选择Available项目列表中的flex_server

选择Add将项目添加到Configured项目列表

选择Finish

添加项目到 Configured项目列表

客户端应用程序

现在我们将创建消息传递客户端应用程序

创建新的Flex Client Project选择File→New→Project并指定Flex Project然后选择Next

在BEA Workshop中创建Flex Project

指定Flex Data Services选中Compile application on the server when the page is viewed选项然后选择Next

配置 Flex Client应用程序数据访问方式

更新服务器属性(Root folderRoot URL和Context root)然后选择Next

配置Flex Server信息

指定flex_client作为Project名称然后选择Finish

编辑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

启动Tomcat服务器

在Flex项目中右键单击flex_clientmxml文件然后选择Run As→Flex Application

运行flex_clientmxml页

使用应用程序

要使用应用程序请在Input Panel中输入您的消息文本然后按下回车键这样消息将被发送到flex_server应用程序中的simpletopic收信方

Consumer对象mySubscriber将从simpletopic收信方接收消息然后调用receiveMessage函数在Incoming Messages Panel中显示消息

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

上一篇:applet在IE浏览器中不能显示的解决方案

下一篇:使用Seppia创建模块化应用程序