内容


WebSphere ESB 入门:创建 POJO 并将其作为服务发布

Comments

先决条件

本文假定您已经安装了 IBM WebSphere ESB 6.0 和 IBM WebSphere Integration Developer 6.0。

WebSphere Enterprise Service Bus 简介

WebSphere Enterprise Service Bus 是允许应用程序以灵活方式进行集成的平台,可帮助企业实现其面向服务的体系结构(Service-Oriented Architecture,SOA)目标。ESB 允许服务使用者和服务提供者彼此进行交互,而其间没有任何直接依赖关系。在 ESB 中,需要其他应用程序的服务的应用程序称为“服务使用者”,而提供服务的应用程序称为“服务提供者”。ESB 将服务使用者和服务提供者分离开,务必注意的是,您可以更改服务使用者或服务提供者的接口定义,而不用修改另一方。

WebSphere Enterprise Service Bus 能够执行以下主要任务,从而将服务提供者与服务使用者分离开来:

  1. 请求和响应路由:服务提供者和服务使用者之间的全部通信都以消息的形式进行。服务使用者请求服务,并针对 ESB 创建请求消息。ESB 平台将充当提供者和使用者之间的传输媒介。ESB 将标识实际的服务提供者并将请求传递给提供者。服务提供者完成操作后,将以消息格式生成响应,并随后将其返回给 ESB。ESB 将响应传输回实际的使用者。在整个通信过程中,提供者和使用者都不会意识到彼此的存在。只有 ESB 知道将请求和响应消息路由到何处。
  2. 消息转换:ESB 允许提供者和使用者使用自己的协议和消息传递格式。他们并没有必要遵循相同的协议和消息格式——ESB 将负责处理不同的协议和不同的消息格式。它知道如何将一种消息格式转换为另一种消息格式,也知道如何将使用一种协议的消息转换为使用另一种协议的消息。

下图说明了 ESB 的角色:

图 1. ESB 概略图
ESB 概略图
ESB 概略图

在 WSDL 中创建接口

我们从将摄氏度转换为华氏度的示例服务组件着手进行演示。Temperature Converter 组件具有名为 convert 的方法,该方法接受以摄氏度表示的给定温度,并将返回对应的华氏度温度作为输出。我们将使用 JavaServer Pages (JSP) 客户机进行测试,此客户机通过独立引用访问该服务组件。

在 WebSphere ESB 中发布的每个服务组件都具有一个定义良好的接口。我们可以在 WebSphere Integration Developer 中为上述服务组件创建接口 TemperatureConverterInterface

图 2. 使用 New Java Interface Wizard 创建 WSDL 接口
使用 New Java Interface Wizard 创建 WSDL 接口
使用 New Java Interface Wizard 创建 WSDL 接口

如下所示,向上述接口添加具有一个输入和一个输出的请求与响应操作。此处的操作名为 convert,输入为 Celsius as double,输出为 Fahrenheit as double

图 3. 向接口添加操作
向接口添加操作
向接口添加操作

从 WSDL 通过 Assembly Editor 将服务组件作为 POJO 实现

接下来,我们为上述接口创建一个传统 Java 对象 (POJO) 实现。我们可以在 Assembly Editor 的帮助下采用 Java 创建实现(服务组件),如下所示。Assembly Editor 属于 WebSphere Integration Developer,允许开发人员通过接口(导入和导出)和绑定来连接 SCA 组件。我们将此实现命名为“TemperatureConverterImpl.java”。

图 4. 使用 Assembly Editor 创建服务组件
使用 Assembly Editor 创建服务组件
使用 Assembly Editor 创建服务组件

接下来,我们需要通过“Add Interface”将接口 TemperatureConverterInterface 与此实现相关联。

图 5. 将接口与生成的服务组件相关联
将接口与生成的服务组件相关联
将接口与生成的服务组件相关联

现在接口已与组件关联。我们可以通过使用“Generate Implementation”选项生成实现的框架。

图 6. 为新服务组件生成实现
为新服务组件生成实现
为新服务组件生成实现
图 7. 将实现添加到生成的框架中
将实现添加到生成的框架中
将实现添加到生成的框架中

我们需要在上述类中添加 convert 方法的实现,如下所示:

清单 1. Convert 方法实现
public Double convert(Double celsius) {
	double dCelsius = celsius.doubleValue();
	double fahr;
	fahr = (((0.9/0.5) * dCelsius) + 32);
	return new Double(fahr);
}

将服务组件与独立引用关联

接下来,我们将创建独立引用,并将其与服务组件相关联,以便 JSP 客户机能够通过独立引用访问该组件。

图 8. 创建独立引用
创建独立引用
创建独立引用

我们可以通过“Add Reference”按钮将 TemperatureConverterInterface.wsdl 与独立引用相关联。缺省情况下,独立引用将被命名为 TemperatureConverterInterfacePartner

图 9. 将独立引用与服务组件连接
将独立引用与服务组件连接
将独立引用与服务组件连接

创建客户机,并通过独立引用访问服务

接下来,我们需要开发客户机 JSP 来测试服务组件。此 JSP 将允许用户输入摄氏度值。随后 JSP 会将该值传递给服务,以将其转换为华氏度,并最后显示结果。

图 10. 新 JSP 文件模板
新 JSP 文件模板

将随后使用下面所示的 ServiceManager 类通过 JSP 调用组件。

清单 2. JSP 实现
String cel = request.getParameter("celcius");
if(cel != null && cel.length() > 0){
try{
  ServiceManager serviceManager = new ServiceManager();
  Service service = (Service) serviceManager.locateService
  ("TemperatureConverterInterfacePartner");
  Double celDouble = Double.valueOf(cel);
  DataObject respObject = (DataObject) service.invoke("convert", celDouble);
  if(respObject!= null){
	  out.println(respObject.getDouble("Fahrenheit"));
  }
    }catch(Exception e){
    //handele it			
  }
}

打包并在 WebSphere ESB 中部署应用程序

组件和客户机现在已经准备好,可以打包并在 WebSphere ESB 中部署,以便进行测试。将应用程序导出为 Integration Module EAR,如下所示。

图 11. 将项目作为集成模块导出
将项目作为集成模块导出
将项目作为集成模块导出
图 12. 集成模块导出
将项目作为集成模块导出
将项目作为集成模块导出

在 WebSphere ESB 中通过 Admin Console 部署 EAR 文件,并在浏览器中访问其“URL”。

图 13. 最终输出
最终输出

结束语

通过本文,您已经了解了如何使用自底向上方法(从接口到实现)创建服务组件以及如何在 IBM WebSphere ESB 中发布它。另外,还了解了如何通过独立引用从客户机访问此服务组件。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, Java technology
ArticleID=202776
ArticleTitle=WebSphere ESB 入门:创建 POJO 并将其作为服务发布
publish-date=03202007