c#可以开发jboss ibm mqq吗

网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&&>>&正文
使用C#和MSMQ开发消息处理程序(2)
essageFormatter 对象、ActiveXMessageFormatter 对象。由于后两者格式化后的消息通常不能为人阅读,所以我们经常用到的是XMLMessageFormatter对象。 使用XMLMessageFormatter对象格式化消息的代码如下所示: string[] types = { "System.String" }; ((XmlMessageFormatter)mq.Formatter).TargetTypeNames = Message m=mq.Receive(new TimeSpan(0,0,3)); 将接收到的消息传送给消息变量以后,通过消息变量m的Body属性就可以读出消息了: MessageBox.Show((string)m.Body); 关闭消息队列 消息队列的关闭很简单,和其他对象一样,通过Close函数就可以实现了: Mq.Close(); 到此为止,MSMQ应用程序的基础知识就介绍完全了,但是开发出一个功能强大的MSMQ应用程序显然不是这么简单,要了解更详细的资料可以参考MSDN和Windows操作系统中关于消息队列的<BR
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:C# 实现消息的收发IBM WebSphere MQ 队列 - 下载频道
- CSDN.NET
&&&&C# 实现消息的收发IBM WebSphere MQ 队列
C# 实现消息的收发IBM WebSphere MQ 队列
一个C#实现IBM WebSphere MQ 消息收发的实例,自己平时写的,如遇困难,请留言
若举报审核通过,可奖励20下载分
被举报人:
huang_dannier
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
服务器应用下载排行保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 .
这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。
所有提交的信息确保安全。
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
developerWorks 社区:
我的概要信息
选择语言:
, WebSphere J2EE Consultant, IBM Software Services for WebSphere
Bobby Woolf 是
(ISSW) 的 WebSphere J2EE 顾问。Bobby 帮助客户机使用 WebSphere Studio Application Developer 来为 WebSphere Application Server 开发应用程序。他与人合著了
。此外,他还在 IBM developerWorks Web 站点拥有一个博客 (blog),称为
Bobby 经常在会议上发言。
简介:&配置 IBM(R) WebSphere(R) Application Server V6 以将 IBM WebSphere MQ V5.3 作为它的 Java(TM) Message Service (JMS) 提供程序使用。
发布日期:&2005 年 6 月 01 日
级别:&初级
访问情况 :&2470 次浏览
许多组织开始依靠 IBM WebSphere MQ 来进行企业消息传递,并依靠 IBM WebSphere Application Server 来部署他们的 Java 2 Platform Enterprise Edition (J2EE(TM)) 应用程序。很自然地,这些组织希望能够同时使用这两个产品,并将 WebSphere MQ 作为部署在 WebSphere Application Server 中的 J2EE 应用程序的 Java Message Service (JMS) 提供程序使用。
本文演示了如何配置 WebSphere Application Server V6 以将 WebSphere MQ V5.3 作为它的 JMS 提供程序使用,从而帮助实现这个愿望。我们假定在同一台服务器上(它是首选的拓扑)安装了 WebSphere Application Server 和 WebSphere MQ,并包含一个简单的 J2EE 应用程序来演示和测试点到点和发布/订阅这两个域的 JMS 消息传递。
本文使用的应用程序代码可以很容易地使用 IBM Rational(R) Application Developer for WebSphere Software V6(下面简称为 Application Developer)来检查和测试。另外,还可以使用 WebSphere Application Server Toolkit (ASTK) 来执行这里描述的任务。文中所给出的示例是使用 Microsoft(R) Windows(R) XP 上的产品来显示的。
在介绍如何配置服务器之前,我们先看一下使用了本文所描述的配置的示例代码(下载本文后面的)。
我们的示例应用程序 JMSExample 不是一个完整的应用程序,而是几个简单的 Enterprise JavaBean (EJB) 组件,它们演示了如何使用 JMS 来发送和接收消息。完整的应用程序将使用这样的类来让应用程序能够使用消息传递。为了理解该示例的工作方式,我们将检查这些类及其部署描述符。检查这段代码的一种简单方式是将 EAR 文件导入 Application Developer(请参阅 )。
JMSExample 中的类实现了下面的图 1 所列出的 EJB 组件。
MessageProducerSSBBean
创建和发送消息的无状态会话 Bean。将这段代码封装在一个 EJB 中可以使该代码拥有自己的环境引用来访问 JMS 资源。在完整的应用程序中,将消息传递代码封装在一个 EJB 组件中可以使该 EJB 容器能够管理消息传递提供程序和其他事务性资源(如数据库)之间的事务。
该 Bean 有两个公共方法:sendMessage(String) 和 publishMessage(String),它们分别用于向示例的队列或主题添加包含某些文本的消息。由于 JMS 1.1 将点到点和发布/订阅消息传递域统一起来,因此为了避免重复代码,这两个方法只需调用第三个方法——私有方法 produceMessage(String, String, String)——来完成创建消息和将消息添加到队列或主题的所有工作。
ReceiverMDBBean
一个消息驱动 Bean (MDB),配置为侦听示例队列中的所有消息。当接收到一个消息时,它会将输出打印到 System.out 来显示消息内容。
SubscriberNDMDBBean
一个 MDB,配置为非持久订户,用于侦听示例主题中的消息。与 ReceiverMDBBean 一样,这个 Bean 也显示它接收到的消息内容。
SubscriberDMDBBean
一个 MDB,和 SubscriberNDMDBBean 一样侦听相同的主题,但作为持久订户。因为我们有两个 Bean 类与该主题相关联,所以有两个 Bean 池(两组 MDB 实例),每个 Bean 池都将接收任何已发布的消息,表明主题确实将每个消息广播给所有订户。
EJB 组件是在具有环境引用的 EJB 部署描述符中配置的,它使得 EJB 可以通过它们的 Java Naming and Directory Interface (JNDI) 名称访问服务器资源。这些引用(如下所示)可以在 EJB Deployment Descriptor 编辑器(图 2)中看到。
MessageProducerSSBBean
由于定义了以下三个环境引用,使得它可以访问发送消息时需要的 JMS 提供程序资源:
jms/JMSExampleConnectionFactoryRef——用关键字 jms/JMSExampleConnectionFactory 来引用 JNDI 目录中绑定的 JMS ConnectionFactory。
jms/JMSExampleQueueRef——用关键字 jms/JMSExampleQueue 来引用 JNDI 目录中绑定的 JMS Queue。
jms/JMSExampleTopicRef——用关键字 jms/JMSExampleTopic 来引用 JNDI 目录中绑定的 JMS Topic。
ReceiverMDBBean
目的地类型 = "Queue"
侦听器端口 = "JMSExampleQueuePort"
SubscriberNDMDBBean
目的地类型 = "Topic"
订户持久性 = "NonDurable"
侦听器端口 = "JMSExampleTopicPort"
SubscriberDMDBBean
目的地类型 = "Topic"
订户持久性 = "Durable"
侦听器端口 = "JMSExampleTopicPort"
这两个订户池将共享相同的侦听器端口。
既然我们熟悉了 JMS 示例应用程序,就可以安装 WebSphere MQ,以便 WebSphere Application Server 能够把它作为 JMS 提供程序。
要在 WebSphere Application Server 中使用 WebSphere MQ 提供程序,必须安装 WebSphere MQ。我们假定在同一台服务器上安装了 WebSphere Application Server 和 MQ,并且应用程序将使用绑定传输模式来进行连接。我们作出这样的假定有两个原因:
在应用服务器上本地安装 WebSphere MQ 使得示例更加简单。这允许 WebSphere Application Server 使用绑定传输模式连接到 WebSphere MQ,而不必使用客户机连接模式,前者使用 Java Native Interface (JNI) 库来直接连接到 MQ 队列管理器,而后者是通过 TCP/IP 网络连接来建立连接的。
一般来说,使用客户机模式访问 WebSphere MQ 是不得已才为之的。通常消息传递应用程序(在本例中是一个在 WebSphere Application Server 中运行的 J2EE 应用程序)与 WebSphere MQ 不在同一台计算机上运行,所以应用程序必须使用同步的、可靠性较差的 TCP/IP 网络连接来连接到它的异步的、可靠性很高的消息传递系统上。然而,WebSphere Application Server V6 包括 Service Integration Bus 和 WebSphere MQ 链接;可以将这二者结合使用以作为连接到 WebSphere MQ 的桥梁,从而提供一个比使用客户机模式质量更高的方法。因此,请在绑定模式下使用 WebSphere MQ,或者使用 WebSphere MQ 链接,而不要使用客户机模式。
在 WebSphere MQ Explorer(图 3)中:
导航到 Queue Managers 文件夹。
以缺省设置新建一个名为 QMGR 的队列管理器。(按照惯例,TCP/IP 侦听器端口的端口号应该为 1414,但由于我们使用绑定传输模式,所以该端口是可选的。)当 WebSphere Application Server 将应用程序连接到 WebSphere MQ 时,它会将该应用程序连接到此队列管理器。
导航到 QMGR 的 Queues 文件夹。
以缺省设置新建一个名为 EXAMPLE.QUEUE 的本地队列。应用程序将使用该队列来执行点到点消息传递。
WebSphere MQ V5.3 不包含对发布/订阅消息传递的支持,但您可以通过安装 MA0C SupportPac: WebSphere MQ (MQSeries) Publish/Subscribe 来添加这种支持,我们假定您将使用这个支持包。最近的 WebSphere MQ 修复包(以 CSD08 打头)包含该 MA0C SupportPac。(运行 mqver 查看 WebSphere MQ 的版本号。)如果安装没有包含 SupportPac,则可以将它添加进来(请参阅以找到它的下载位置。)如果您使用独立的发布/订阅产品,例如 WebSphere Business Integration Event Broker 或 Message Broker,则本文显示的一些 WebSphere Application Server 配置设置将有所不同。
在安装 MA0C SupportPac 之后,需要配置并启动它:
定义 JMS 发布/订阅管理队列:
C:\WebSphere MQ\bin& runmqsc QMGR & ..\Java\bin\MQJMS_PSQ.mqsc
启动代理并确认它正在运行:
C:\WebSphere MQ\bin& strmqbrk -m QMGR
MQSeries Publish/Subscribe broker started for queue manager QMGR.
C:\WebSphere MQ\bin& dspmqbrk -m QMGR
MQSeries Publish/Subscribe broker for queue manager QMGR running.
我们已经安装好 MA0C SupportPac,定义了管理队列,并启动了代理。现在 WebSphere MQ 可以用于发布/订阅功能了,它为应用程序用来执行发布/订阅消息传递的主题实现代理。
要配置 WebSphere Application Server 以将 WebSphere MQ 作为其 JMS 提供程序使用,需要执行这些常规步骤:
如果您使用 Application Developer 来启动 WebSphere Application Server,请切换到 Servers 视图,选择该服务器,并按 Start 按钮。(图 4)
要从 OS 命令行启动 WebSphere Application Server,请运行 startServer 脚本(假定您使用缺省概要来创建服务器,并且它的名称为 server1):
C:\WebSphere Application Server\bin& startServer server1
服务器成功启动后,您将会在 Console 视图或 SystemOut.log 文件(位于 &was_home&\profiles\server1\logs 目录中)中看到这条消息:
WSVR0001I: Server server1 open for e-business
如果您使用的是 Rational Application Developer,则 Servers 视图将显示服务器的状态为 Started。
打开管理控制台。在 Application Developer 中,从 Servers 视图选择该服务器,右键单击并选择“Run administrative console”。也可以通过 Web 浏览器打开此 URL 来运行管理控制台(假定服务器是在本地机器中使用缺省端口设置运行的):
http://localhost:9060/ibm/console
登录到控制台。使用管理控制台来执行以下几节中的步骤,不管您如何启动 WebSphere Application Server,这些步骤都一样。
在管理控制台中,导航到 Resources =& JMS Providers =& WebSphere MQ (图 5)以显示主 WebSphere MQ 消息传递提供程序面板(图 6)。
缺省作用域是 Node,这已经可以了(作用域在这个示例中关系不大,因为我们在一个单元的一个节点中只使用一台服务器;任何作用域都会将配置应用到我们的服务器上)。“General Properties”已为您进行了设置。“Additional Properties”部分中的链接可以让您管理以下 JMS 管理对象:
WebSphere MQ 连接工厂ConnectionFactoryWebSphere MQ 队列连接工厂QueueConnectionFactoryWebSphere MQ 队列目的地QueueWebSphere MQ 主题连接工厂TopicConnectionFactoryWebSphere MQ 主题目的地Topic
在 WebSphere Application Server 中管理的对象被绑定在 JNDI 中,它允许 J2EE 应用程序中的 JMS 代码访问 WebSphere MQ 中的相关资源。(每个 WebSphere MQ 提供程序对象都有各种设置可供配置,但我们只介绍示例正常工作所需的几个主要设置。有关详细信息,请参阅
中的 10.6.3 小节“Configuring the WebSphere MQ JMS provider”和 10.6.4 小节“Configuring listener ports”。)
我们需要定义 JMS 连接工厂,我们的代码将用它来与 WebSphere MQ 建立 JMS 连接。在对话框的“Additional Properties”部分(图 6)中,选择 WebSphere MQ connection factories 以显示 WebSphere MQ 连接工厂面板(图 7)。
按 New 按钮。在接下来的面板中,输入或选择以下值:
Name任何字符串;按照惯例,我们使用与其 JNDI 叶相同的名称。JMSExampleConnectionFactoryJNDI name为无状态会话 Bean 定义资源引用的 JNDI 绑定时使用的相同值。jms/JMSExampleConnectionFactoryQueue managerWebSphere MQ 队列管理器的名称,它实现了队列,而它的 MA0C 代理实现应用程序要使用的主题。QMGRTransport type绑定表示 WebSphere MQ 及其队列管理器是本地安装的,与 WebSphere Application Server 位于同一台计算机,因此可以直接访问。另外,传输类型还可以是 Client,它使用 TCP/IP 来远程连接到队列管理器;不过如前面所述,WebSphere Application Server V6 应用程序应该使用 WebSphere MQ 链接而不是 Client 模式来远程访问 WebSphere MQ。BindingsClient ID必需的设置,因为该示例包含一个持久订户。JMS 使用主题名称、客户机 ID 和订户名称来唯一标识一个持久订阅。此设置是 JMS 必需的客户机 ID。它可以是任何字符串,但要求对每个(主题)连接工厂是唯一的。client1Broker version
Basic 表示我们正在使用 MA0C SupportPac。另一种设置 Advanced 表示我们正在使用独立的发布/订阅产品:WebSphere Business Integration Event Broker 或 Message Broker。BasicBroker message selection指示消息传递系统的哪个部分实现消息选择器。(本示例不使用消息选择器,但不管怎么样还得配置该设置。)MA0C 代理只支持在客户机中执行消息选择。Client
其他所有设置都接受缺省值。具体来说就是几个指定各种代理管理队列的字段。只要您使用 MQJMS_PSQ.mqsc 文件来定义这些队列,这些缺省名称就都将有正确的值,因此您可以在 WebSphere Application Server 中把这些字段保留为空,它会采用缺省名称。
按面板底部的 Apply 提交更改。
我们需要使用 WebSphere MQ 来定义代码用来执行点对点消息传递的 JMS 队列:
在管理控制台中,再次导航到 WebSphere MQ messaging provider 面板。
在“Additional Properties”部分,选择 WebSphere MQ queue destinations。
在“WebSphere MQ queue destinations”面板中,按 New 按钮。
在接下来的面板中,输入或选择以下值:
Name可以是任何字符串;按照惯例,我们使用与其 JNDI 叶相同的名称。JMSExampleQueueJNDI name在为无状态会话 Bean 定义环境引用时使用的相同值。jms/JMSExampleQueueBase queue nameWebSphere MQ 中的队列的名称(与访问该队列的 Java 引用相对)。这与我们前面配置 WebSphere MQ 时使用的队列名称相同。EXAMPLE.QUEUE
其他所有设置都接受缺省值。具体来说,如果 Base 队列管理器名称保留为空,则其缺省值将为用于连接该队列的连接工厂的队列管理器值。
按 Apply 提交更改。
我们需要使用 WebSphere MQ 来定义代码用来执行发布/订阅消息传递的 JMS 主题:
在管理控制台中,再次导航到 WebSphere MQ messaging provider 面板。
在“Additional Properties”部分,选择 WebSphere MQ topic destinations 以显示“WebSphere MQ topic destinations”面板。
按 New 按钮。
在“New WebSphere MQ topic destinations”面板(图 9)中,输入或选择以下值:
Name可以是任何字符串;按照惯例,我们使用与其 JNDI 叶相同的名称。JMSExampleTopicJNDI name在为无状态会话 Bean 定义环境引用时使用的相同值。jms/JMSExampleTopicBase topic nameWebSphere MQ 的 MA0C 代理中的主题名称。这个名称是任意的,但应该是唯一的和描述性的主题名称。ExampleTopic
其他所有设置都接受默认值。具体来说就是两个指定持久订阅管理队列的字段。只要我们使用 MQJMS_PSQ.mqsc 文件来定义这些队列,缺省值就应该是正确的,因此在 WebSphere Application Server 中可以将这些字段保留为空,它会采用缺省名称。
按 Apply 提交更改。
我们的示例代码需要两个侦听器端口,必须在服务器中定义它们:
JMSExampleQueuePort
JMSExampleTopicPort
在管理控制台中,导航到 Servers =& Application Servers(图 10)。
在“Application servers”面板中,单击链接到服务器的 server1(缺省情况下服务器命名为 server1)以显示应用服务器配置面板(图 11)。
在“Communications”部分,导航到 Messaging =& Message Listener Service,然后选择 Listener Ports。
在“Listener Ports”面板中,按 New 按钮。
在“New listener port”面板(图 12)中,输入或选择以下值:
Name与在 ReceiverMDBBean 的配置中指定的名称相同。侦听器端口名称可以是任意字符串,但必须与 MDB 配置中的名称匹配。JMSExampleQueuePortConnection factory JNDI name与前面定义的连接工厂中的 JNDI Name 字段值相同。jms/JMSExampleConnectionFactoryDestination JNDI name与前面定义的队列中的 JNDI Name 字段值相同。jms/JMSExampleQueue
所有其他设置都接受缺省值。很明显,“Initial State of Started”意味着侦听器端口将在服务器启动时启动。
在面板底部,按 Apply 提交更改。
再次执行步骤 a 到 f 创建第二个侦听器端口,可以使用以下设置:
NameJMSExampleTopicPortConnection factory JNDI namejms/JMSExampleConnectionFactoryDestination JNDI namejms/JMSExampleTopic
选择 Save 链接,然后单击 Save 按钮,将更改保存到服务器的配置文件中。
退出管理控制台并关闭浏览器。
既然已经配置了服务器,我们就基本可以部署和测试应用程序了。不过首先要重启服务器才能使它使用更改的配置运行。(您可以重启服务器,然后部署应用程序,但之后在重启服务器时将无法在 Console 视图或 SystemOut.log 中看到应用程序启动消息。)
在本小节中,我们将:
要将我们的 JMSExample 应用程序添加到服务器,请执行下列步骤:
如果使用 Rational Application Developer,则:
进入“Servers”视图,选择该服务器,然后从弹出菜单中选择 Add and remove projects...。
在“Add and Remove Projects”对话框中,将 JMSExample 添加到已配置项目列表中,然后单击 Finish。通过这种方式将企业项目与服务器相关联,重启服务器后,不仅部署到服务器的项目会自动变得可用,而且以后对项目代码进行的更改也会自动变得可用。
对于 WebSphere Application Server:
打开管理控制台,导航到 Applications =& Install New Application。
使用“Application Installation”面板来安装 JMSExample.ear 文件。
不管采用哪种方法,在部署应用程序时,除非已经重启服务器,否则将在控制台和 SystemOut.log 文件中报错,表明应用程序不能启动。出错原因是我们所做的配置更改只有在服务器重启后才能生效,所以此时可以忽略这些错误。一旦重启,服务器就会用我们为它配置的资源成功启动应用程序。
需要停止和启动服务器才能使它重新读取更改的配置文件并以新配置运行:
在“Rational Application Developer Servers”视图中,右键单击服务器并选择 Restart =& Start。另外,还可以单击 Stop 按钮停止服务器,然后单击 Start 按钮让它再次启动。“Servers”视图显示服务器的状态为“Started”。
如果您从 OS 命令行运行 WebSphere Application Server,则可以使用这些命令来运行 stopServer 和 startServer 脚本(假定您的服务器为缺省概要并且命名为 server1):
C:\WebSphere Application Server\bin& stopServer server1
C:\WebSphere Application Server\bin& startServer server1
一旦重启,您将在控制台或 SystemOut.log 文件中看到这段消息:
WSVR0001I: Server server1 open for e-business
启动服务器后,System.out(控制台或 SystemOut.log 文件中)会打印出大量状态消息。我们来检查一下和我们的示例有关的消息:
这些消息显示我们的连接工厂、队列和主题已经绑定到 JNDI 中:
WSVR0049I: Binding JMSExampleConnectionFactory as jms/JMSExampleConnectionFactory
WSVR0049I: Binding JMSExampleQueue as jms/JMSExampleQueue
WSVR0049I: Binding JMSExampleTopic as jms/JMSExampleTopic
这些消息显示我们的应用程序(包括它的 EJB JAR 文件)已经启动:
WSVR0200I: Starting application: JMSExample
WSVR0207I: Preparing to start EJB jar: JMSExampleEJB.jar
WSVR0037I: Starting EJB jar: JMSExampleEJB.jar
WSVR0221I: Application started: JMSExample
这些消息显示侦听器端口已经启动(对于每个 MDB 类,该消息都打印一次,所以我们能看到两次关于主题端口的消息。)
WMSG0042I: MDB Listener JMSExampleTopicPort started successfully
for JMSDestination jms/JMSExampleTopic
WMSG0042I: MDB Listener JMSExampleTopicPort started successfully
for JMSDestination jms/JMSExampleTopic
WMSG0042I: MDB Listener JMSExampleQueuePort started successfully
for JMSDestination jms/JMSExampleQueue
如果能看到所有这些消息,并且没有看到任何错误或异常堆栈转储(Stack Dump),则服务器和示例应用程序就已经成功启动了。
到目前为止,我们已经配置了服务器,部署了应用程序,并成功启动了服务器。现在,我们将使用 Universal Test Client (UTC)(Rational Application Developer 中的一个 IBM 工具)、Application Server Toolkit (ASTK) 和 WebSphere Application Server 来测试我们的应用程序。我们将使用 UTC 来运行无状态会话 Bean,然后观察 System.out,看看 MDB 做了什么。
在 Rational Application Developer 中,我们将在服务器上运行 MessageProducerSSBBean,它会在运行于服务器的 Bean 的 Home 接口的实例上打开 UTC。其步骤是:
从 Project Explorer 导航到 EJB Projects =& JMSExampleEJB =& Deployment Descriptor: JMSExampleEJB =& Session Beans =& MessageProducerSSB。
右键单击该 Bean,然后选择 Run =& Run on server...(图 15)。
在“Server Selection”对话框中,选择为这个示例配置的服务器,然后单击 Finish。这将启动服务器(如果它尚未运行的话)并在无状态会话 Bean 的 Home 接口上运行 UTC。
切换到“Console”视图,并滚动到底部,这样可以观察到来自 MDB 的输出。
启动 Universal Test Client 的最简单方式是使用 Rational Application Developer 或 Application Server Toolkit (ASTK) 在服务器上运行 EJB。然而,如果从命令行启动 WebSphere Application Server 并且只想在 Web 浏览器中运行 UTC,则也可以这样做,这样需要做更多的工作。
该 UTC 是一个 J2EE 应用程序,称为 IBMUTC。如果应用程序已经运行,则在 Web 浏览器中通过此 URL 打开 UTC(假定服务器已经使用缺省端口设置在本地机器上运行):
http://localhost:9080/UTC/
如果此 URL 无效,请确认应用程序已部署并正在运行:
在管理控制台中,在已安装应用程序列表中查找 IBMUTC 应用程序(通过导航到 Applications =& Enterprise Applications)并确认它已启动。
如果应用程序不在该列表中,则需要安装它(通过导航到 Applications =& Install New Application)。该 EAR 文件位于 &was_home&\deploytool\itp\plugins\com.ibm.etools.utc_6.0.0\IBMUTC.ear -- not in the &was_home&\installableApps 目录中。如果未能找到此文件,则表明 WebSphere Application Server 安装时肯定没有安装这些示例,在这种情况下,您应该进行安装并改用 ASTK 或 Rational Application Developer。
当通过此 URL 打开 UTC 时,需要定位想要测试的 EJB 组件的 Home 接口。使用 JNDI Explorer,导航到 [Local EJB Beans] =& ejb =& com =& ibm =& examples =& jms =& MessageProducerSSBLocalHome,并选择 MessageProducerSSBLocalHome,以将其添加到导航面板的“EJB Beans”部分。(图 16)
现在,可以使用 UTC 和 EJB 的 Home 接口来创建和测试 EJB,就像选择在服务器上运行它一样。
在第一次测试中,我们将用点到点方式发送一条测试消息并确认消息成功接收:
在 UTC 导航面板中,导航到 EJB Beans =& MessageProducerSSBLocal =& MessageProducerSSBLocalHome =& MessageProducerSSBLocal create()。
选择 Home 接口的 create() 方法。
在“Parameters”面板中,单击 Invoke 按钮。
在“Results”面板中,您将会注意到创建了一个名为 MessageProducerSSBLocal 1 的实例。按 Work with Object 将该实现添加到 EJB Beans 列表中。
在 EJB Beans 列表的 MessageProducerSSBLocal 1 中,选择 Bean 的 sendMessage(String) 方法。
现在 Parameters 面板包含在无状态会话 Bean 上调用 sendMessage(String) 的字段和按钮。(我们已经可以发送 JMS 消息了,所以请确保能够看到 Console 视图底部或 SystemOut.log 文件末尾的文本。)
对于 String 参数,在 Value 字段中输入一些简单的文本以供测试,例如 test queue 123,然后单击 Invoke。
Results 面板应该会显示方法已成功完成。等待几秒钟,如果一切正常,Console(或 SystemOut.log 文件)应该会显示这样的输出:
MESSAGE DRIVEN BEAN 'Receiver' CONSUMED MESSAGE: test queue 123
这个测试表明,ReceiverMDB Bean 已经接收到 MessageProducerSSB bean 刚发送到 JMSExampleQueue 队列的消息。点到点消息传递成功了!
在接下来的测试中,我们将发布一条测试消息,并确认两个订户都成功接收到它。
在 UTC EJB Beans 列表中,在 MessageProducerSSBLocal 1 下选择 publishMessage(String) 方法。输入一些参数值(如 test topic 456),然后按 Invoke。
该方法成功完成并在几秒后应该能看到这样的输出:
MESSAGE DRIVEN BEAN 'Non-durable Subscriber' CONSUMED MESSAGE: test topic 456
MESSAGE DRIVEN BEAN 'Durable Subscriber' CONSUMED MESSAGE: test topic 456
这些消息表明,SubscriberNDMDB 和 SubscriberDMDB Bean 都已接收到 MessageProducerSSB Bean 刚发布到 JMSExampleTopic 主题的消息。发布/订阅消息传递成功了!
在接下来的测试中,我们将显示持久订户的订阅确实是持久性的,并演示持久订阅和非持久订阅之间的区别:
打开管理控制台并导航到 Application servers =& server1 =& Message Listener Service =& Listener Ports。
通过选中 JMSExampleTopicPort 侦听器端口的复选框并选择 Stop 来停止它。
状态图标应该变为一个红色的 X(指示 Stopped),并且 System.out 应该显示:
WMSG0043I: MDB Listener JMSExampleTopicPort stopped for
JMSDestination jms/JMSExampleTopic
这表明订户应用程序已经脱机。
返回到 UTC,用一些示例文本(如 "test durability 789)再次运行 publishMessage(String)。结果应该显示该方法正确运行,而 System.out 没有显示什么内容。
等待一分钟,确认 MDB 不会接受消息;它们不应该接收,因为它们的侦听器端口没有运行,因此没有侦听任何消息。
返回到管理控制台并启动侦听器端口。System.out 应该再次显示侦听器端口启动:
WMSG0042I: MDB Listener JMSExampleTopicPort started successfully for
JMSDestination jms/JMSExampleTopic
然后有一个订户接收到您一分钟前发送的消息:
MESSAGE DRIVEN BEAN 'Durable Subscriber' CONSUMED MESSAGE: test durability 789
只有一个订户接收到该消息,也就是持久订户,而其他订户没有接收到消息。这就是持久订阅和非持久订阅之间的区别:前者会在订户脱机时将消息排入队列中,并在订户重新在线时传递给它们;而非持久订阅在订户脱机时会自动取消订阅。
要表明两个订户确实又在运行,请再次运行 publishMessage(String) 并输入一些示例文本,如 test durability 000。
System.out 显示两个订户正在运行:
MESSAGE DRIVEN BEAN 'Durable Subscriber' CONSUMED MESSAGE: test durability 000
MESSAGE DRIVEN BEAN 'Non-durable Subscriber' CONSUMED MESSAGE: test durability 000
持久和非持久订户成功了!
本文提供了以下信息:
一个非常简单的 J2EE/JMS 应用程序,它演示了点到点和发布/订阅消息传递。
如何用必要的队列和 MA0C SupportPac 来为发布/订阅设置 WebSphere MQ。
如何在 WebSphere Application Server 中配置服务器以将 WebSphere MQ 作为其 JMS 提供程序使用。我们用必要的连接工厂、队列、主题和侦听器端口来配置 MQ 提供程序以运行示例应用程序。
服务器如何启动应用程序及其资源。
演示应用程序正常工作的简单测试。
现在,您应该能够为 WebSphere Application Server 开发自己的 J2EE 应用程序来使用 WebSphere MQ(以及 MA0C SupportPac)作为 JMS 提供程序。
作者感谢 Roland Barcia、Wayne Beaton、Tom Alcott、Don Fox、Paul Roubekas 和 David Currie 为本文提供的帮助。
名字大小下载方法JMSExample.ZIP17 KB|
您可以参阅本文在 developerWorks 全球站点上的 。
IBM 产品和 SupportPacs
其他文档——书籍
(IBM 红皮书 SG24-05 年 2 月)
(IBM Publication SC34-04 年 1 月)
(IBM Publication GC34-02 年 6 月)
(IBM 红皮书 SG24-01 年 9 月)
(IBM 红皮书 SG24-03 年 10 月)由 Roland Barcia、Bill Hines、Tom Alcott 和 Keys Botzum 合著的 (IBM Press ISBN ;2004 年 8 月)由 Gregor Hohpe 和 Bobby Woolf 合著的 (Addison Wesley ISBN ;2003 年 10 月)
其他文档——文章
Willy Farrell 撰写的 (developerWorks 教程;2004 年 6 月)Bobby Woolf 撰写的 (developerWorks 文章;2002 年 8 月)Bobby Woolf 撰写的 (developerWorks 文章;2005 年 2 月)Roland Barcia 和 Saravana Chandran 合作撰写的
Bobby Woolf 撰写的 (developerWorks 文章;2004 年 6 月)Roland Barcia、Sree Ratnasinghe 和 Benedict Fernandes 合作撰写的 (developerWorks 文章;2003 年 10 月)
(2005 年 3 月)
(2005 年 3 月)
(2005 年 2 月)
(2005 年 2 月)
(2005 年 4 月)
Bobby Woolf 是
(ISSW) 的 WebSphere J2EE 顾问。Bobby 帮助客户机使用 WebSphere Studio Application Developer 来为 WebSphere Application Server 开发应用程序。他与人合著了
。此外,他还在 IBM developerWorks Web 站点拥有一个博客 (blog),称为
Bobby 经常在会议上发言。
此内容已经标识给管理员注意。
报告滥用提交失败。
请稍后重试。
developerWorks:登录
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。
当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。
所有提交的信息确保安全。
请选择您的昵称:
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
昵称:(长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=WebSphereArticleID=86630ArticleTitle=IBM WebSphere 开发者技术期刊: 让 WebSphere MQ 成为部署在 WebSphere Application Server 中的应用程序的 JMS 提供程序publish-date=author1-email=author1-email-cc=}

我要回帖

更多关于 jboss ibm mq 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信