如何设置ibm websphere是什么 integration developer 8为英文版

创建用于常见场景的示例应用程序

敬请期待该系列的后续内容

此内容是该系列的一部分:ibm websphere是什么 开发者技术期刊

敬请期待该系列的后续内容。

可以如何帮助保证服务使鼡者、服务提供者和总线之间的通信服务质量我们还了解了 WebSphere ESB 产品提供的 ESB 实现,该实现基于一个新编程模型即服务组件体系结构(Service Component Architecture,SCA)SCA 描述导出和导入绑定的概念,我们可以将此类绑定用于通过 JMS 与中介流组件进行交互所需的所有构件都可以使用 IBM

在第 2 部分,我们将开始應用这些概念并演示如何构建实际的应用程序。

在实际的 SOA 业务应用程序——特别是涉及到异类 IT 基础设施的应用程序以及希望对这些 IT 基础設施提供的服务间的工作流进行组合以形成松散耦合的交互的应用程序——中服务使用者和提供者间的消息流并不需要采用同步方式处悝。由于 JMS 作为面向消息的中间件标准得到了广泛的应用因此经常用作同步和异步服务调用的首选协议。

有很多典型的场景其中服务间嘚连接可以使用 JMS 进行传输:电子政务、电子商务或工业制造就是其中的一些例子。

一个具体的用例就是处理会计系统中的文档影响公司財务的文档(如购买货物的发票)在企业中多个系统流动。其中很多都必须采用允许以后进行审计的方式处理(某些情况下这是法律强淛要求的做法)。这意味着此类文档的流通必须能够跟踪而这又要求传输协议要十分可靠。而且所涉及的系统之间的很多交互都实现叻具有异步性本质的工作流。因此所选的协议既要支持消息的可靠事务性交换,也要支持各种消息传递模式(异步和同步调用以及发布/訂阅消息)

同时,要对所有消息进行定向使其通过企业服务总线,以便能够应用其他功能;如基于内容的动态路由或数据转换以及日記记录和日志记录

此会计示例代表了一个场景,在此场景中解决方案采用面向服务的体系结构构建的,但并不一定会使用 Web 服务;在我們的例子中服务通过交换普通 JMS 消息进行通信。为此类解决方案部署 ESB 仍然十分可行

让我们看看另一个场景,制造行业的一个例子:某个公司制造需使用大量部件的产品其中一些部件来自内部的工厂,而其他从外部供应商处购买该公司希望加速其库存周转,降低其库存沝平从而降低内部成本和提高其产品的上市时间。实现此目标的一个方法是与其业务合作伙伴(包括供应商)建立更紧密的关系

通常,制造商将利用生产计划系统(production planning systemPPS)来协调其内部生产与外部供应链。在 PPS 中内部部件的库存较低时,将生成生产请求以生产此部件。

圖 1. 生产计划系统——概略体系结构

除了使用内部工厂提供的部件外该制造商还从外部供应商购买其他部件。为了提高所涉及各方的集成沝平该制造商需要将其 PPS 与其若干供应商系统集成,以便自动交换供求信息为了将 PPS 系统连接到任意数量的供应商(每个供应商都采用自巳独特的协议和数据格式),可能必须开发大量的代码

很多要集成的现有系统都使用 JMS 作为外部消息传递协议。其他系统(特别是最近构建的系统)可能支持 Web 服务在此情况下,制造商决定建立 ESB 来集中处理协议和消息格式的转换从而将对现有系统的任何影响降到最低。例洳外部接口使用 JMS 的现有系统可以与 Web 服务交互,并将处理不同协议的细节委托给 ESB

我们在上面了解了作为协议的 JMS 如何与基于 SOA 的解决方案相關(包括从头创建系统以及必须集成现有系统时的情况)。在这一部分中我们将给出一个测试应用程序实现,以便重点了解使上述场景鈳行的 WebSphere ESB 功能此实现包括:

  • JMS 客户机,将发送不同 JMS 消息格式的请求
  • 服务提供者,接受 JMS 格式服务请求并使用 JMS 消息进行响应。
  • 一个 WebSphere ESB 中介模块包含用于执行实际消息中介操作的中介流。

图 2 给出了测试应用程序概略结构请注意,总共要使用四个队列和 ESB 进行通信

图 2. 测试应用程序

在演示如何构建实际中介流并说明如何插入自定义代码之前(我们将在本系列的第 3 部分进行讨论),我们将了解测试客户端和测试服务提供者(将分别发送和接收 JMS 消息)

另外,您将注意到客户端和提供者代码中没有特定于 WebSphere ESB 的内容。设计就是这样的因为我们假定服务使用者和服务提供者都不需要了解其间存在的 ESB 的任何信息。

我们将不会讨论将 EAR 文件导入到 WebSphere Integration Developer 中的详细步骤应用程序符合普通 J2EE 标准,可以像任何其他 Web 应用程序一样导入和处理另外,我们也不会对整个源代码进行详细说明而仅重点讨论对我们示例重要的那些部分。最后我們将假定会将给出的所有代码部署到 WebSphere ESB 服务器;例如,WID 工具中包含的测试服务器环境

测试客户端应用程序基于某个 Web 应用程序中的一组 JavaServer Page 和 Servlet,尣许在一对 JMS 队列间发送和接收不同类型的 JMS 消息该程序打包为 JMSTestClientV1_6.ear 文件,可以从本文的部分获得此文件

Servlet WriteQueue(清单 1)将产生发送到指定队列目的哋的所有类型的 JMS 消息。它使用标准 JMS API 调用来根据 JSP 页插入的输入构造 JMS 消息根据指示的 JMS 消息类型对输入进行了格式设置。上面的代码示例非常奣白地说明了如何构建 TextMessage可以在可下载源代码中找到与其他类型对应的代码。以下代码摘录演示了如何解析对恰当 JMS

在清单 2可以看到,使鼡了 jms/qcf 作为队列连接工厂的 JNDI 名称而使用 jms/queue_sender 作为实际队列的 JNDI 名称。您将需要在运行应用程序前设置这两个名称(将在下面进行更为详细的说明)

Servlet ReadQueue.java(清单 3 中为其代码摘录)将使用来自指定队列目的地的所有类型的 JMS 消息。它将接收和分析队列中存在的所有 JMS 消息并将经过分析的内嫆发送到相应的 JSP 页,以便进行显示如果 JMS 消息具有 IsBusinessException 属性,且其值为 true则为异常消息。普通消息和异常消息将采用不同的方式显示ReadQueue

在 JMSTestClientV1_6.ear 企业應用程序安装到 WebSphere ESB 运行时期间,所有选项都将使用缺省值可以使用该工具中包括的 WebSphere ESB 测试环境以及任何独立安装的运行时。安装后需要在 WebSphere ESB 管理控制台中执行这些配置步骤:

  1. 第二个队列具有以下设置:

    将与中介模块共享在第 1 步到第 3 步中创建的 JMS 资源。在第 2 步中创建的队列连接工廠还将由中介模块和服务提供者(将在下文中讨论)共享因此,当处理这些部分时将不需要再次创建这些构件。

  2. 在缺省情况下这些徝应该已经配置。

  3. 正确安装并配置了应用程序后在服务器上运行该 Web 应用程序将出现图 4 中显示的内容。

  4. 请暂时不要单击 Post Message 按钮我们尚未安裝所需的其他应用程序部分,因此单击此按钮将不会产生预期的结果不过,完全可以选择带有 Click here 标签的链接来发送另一种类型的 JMS 消息以試验不同类型的 JMS 消息及其各自的输入 JSP。

此 MDB 的 onMessage() 方法充当服务提供者实现以下代码摘录演示了该方法实现的主要内容(应在本文包含的下载攵件中对完整源代码进行分析):

在该方法实现的第一部分,我们通过查找和创建相关 JMS 资源(如消息队列、队列工厂、队列连接、队列会話以及队列发送器)以构建 JMS 消息传输上下文。它们将由 MDB 用于发送应答消息(请记住我们示例中的服务提供者直接将接收到的消息发送囙应答队列)。所有这些都是使用常规 JMS API 实现的

在第二部分中,将根据其 JMS 消息格式处理接收到的 JMS 消息(作为方法参数传递)该 MDB 支持所有伍种类型的消息,这五种类型在 JMS 规范中进行了定义:

尽管格式不同但对每条消息都采用相同的处理机制:print MDB: XXXMessage Received ,提取消息内容然后使用追加的实际内容执行 print MDB: XXXMessage Content:(其中,XXX 可以为上面列出的消息类型之一)最后,会将原始消息直接发送回应答队列(请注意,常规 JMS 应用程序将从請求消息中的 ReplyTo 字段中读取响应队列的名称)

代码中有一段特殊的代码,用于处理允许测试异常情况的 Text 消息:会将包含字符串“Exception”的消息視为导致提供者中出现异常的请求在此情况下,我们会向 JMS 响应消息添加名为 IsBusinessException 的 Header 字段并将其值设置为“true”。在第 3 部分中我们将演示如哬在中介模块中处理此类异常消息,以及如何将其转换为错误以发送回原始客户端。

  1. 对于此 MDB 所使用的队列连接工厂将使用已在 JMS 客户端應用程序安装过程的中创建的队列连接工厂。

  2. 第二个队列具有以下设置:

  3. 在缺省情况下这些值应该已经配置。

  4. 在缺省情况下这些值也應该已经配置。

完成这些步骤后测试应用程序的客户端和服务提供者就均已就绪,可以供使用了唯一剩下的就是开发和安装用于将其連接起来的部件:中介模块,该模块运行于 WebSphere ESB 上并使用自定义绑定处理传入和传出 JMS 消息。我们将把这部分内容留到本系列的最后一部分讨論

在本文中,我们向您展示了一些用例示例这些示例利用 WebSphere ESB 来处理服务使用者和服务提供者(二者均使用 JMS 作为基础消息传递机制)之间茭换的消息。

我们还演示了如何构建允许对创建的中介模块进行灵活测试的测试应用程序这包括用于将消息发送到中介模块的基于 JSP 的 JMS 客戶端,以及用于从模块接收消息的消息驱动 Bean (MDB)

在本系列的最后一部分,我们将讨论最有意义的部分:我们将演示如何构建中介模块本身並说明部署以处理不同类型的 JMS 消息的自定义中介代码。

敬请期待该系列的后续内容

此內容是该系列的一部分:专家访谈

敬请期待该系列的后续内容。

请访问 这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论壇、blog、wiki 和新闻任何关于 Ajax 的新信息都能在这里找到。

如果您正在使用资源引用请记住在 JNDI 查找前面加上 java:comp/env 限定。

下面是我的 .wsdl 文件:

答:Definitions 语句包括了属性 name=""要么该属性不应该存在(根据我的习惯),要么它必须有一个值

我要回帖

更多关于 ibm websphere是什么 的文章

 

随机推荐