开发一个简单的异步 BPEL 进程
本教程提供样例项目 AsynchronousSample 的概述,并用图解来说明如何使用 NetBeans IDE 6.0(带有所必需的全部运行时环境)来部署、执行和测试一个异步
BPEL 进程。
该进程是一个应答进程,但它是异步的应答,不是同步的。客户端向该进程发送消息。该进程接受输入消息并立即返回。然后该进程异步呼叫原来的客户端,并把同一个消息发送回去。异步进程在
BPEL 进程长时间运行(用一长段时间来计算结果)时使用。通过在客户端上进行调用,把得到的结果返回给客户端。在本教程中,您将使用一个简单的 BPEL 项目
AsynchronousSample 和一个复合应用程序项目 AsynchronousSampleApplication。项目包括
WSDL 和方案文件、一个部署描述符和用来测试的输入文件。该进程的 Web 服务接口是一个简单的异步操作。
预计持续时间:30 分钟
教程需求
在开始前,请确保您重新检查了本节中的需求。
先决条件
本教程假设您具有 Java 语言和平台、NetBeans IDE 的一些基本知识或编程经验。
系统需求
本教程假设您的系统符合在
NetBeans IDE 6.0 发行说明的系统需求话题中所规定的需求。
本教程所需的软件
在开始前,您需要在计算机上安装以下软件:带 SOA 的 NetBeans IDE 6.0 和 GlassFish 应用程序服务器,可从
NetBeans IDE 6.0
下载里面的“全部”下载得到。
页首
配置和启动 GlassFish 应用程序服务器
在您安装完全版的 6.0 时,就已经包括了 GlassFish 应用程序服务器。NetBeans IDE 将在需要的时候自动启动应用程序服务器。
要启动 GlassFish 应用程序服务器:
- 如果看不到“服务”窗口,请选择“窗口”>“服务”。
- 在“服务”窗口中,展开“服务器”节点。
“服务器”节点应该包含有 GlassFish 应用程序服务器的子节点。如果 GlassFish 应用程序服务器没有出现,请转到要配置
GlassFish 应用程序服务器。

- 右键单击 GlassFish 应用程序服务器节点,并选择“启动”。
“输出”窗口会显示应用程序启动的日志信息。如果看不到“输出”窗口,请选择“窗口”>“输出”>“输出”。
当消息 Application server startup complete 显示到“输出”窗口时,应用程序服务器就正在运行了。
注意:如果 GlassFish 应用程序服务器节点上出现一个绿箭头标记,服务器就在运行。
注意:把应用程序部署到 GlassFish 应用程序服务器时,将自动启动服务器。这样,您就不必手动启动应用程序服务器。
注意:以下过程展示如何配置 IDE 以使用另一个版本的 GlassFish V2 应用程序服务器。
要配置 GlassFish V2 应用程序服务器:
您可能想使用不同版本的应用程序服务器,而不是随 NetBeans 6.0 提供的那个。例如,您也许想从
GlassFish 社区网站下载并安装更新版本的 GlassFish
V2 应用程序服务器。
以下过程展示如何配置 NetBeans 6.0 IDE 以使用另一个版本的 GlassFish V2 应用程序服务器。假设您已经下载并安装了另一个版本的应用程序服务器。
- 在“服务”窗口,右键单击“服务器”节点,并从弹出菜单选择“添加服务器”。
将打开“添加服务器实例”对话框。
- 在“选择服务器”页,从列表选择“GlassFish V2”。
- 单击“下一步”。
将打开“平台文件夹位置”页。
- 在“平台位置”字段,使用“浏览”按钮来导航并选择应用程序服务器的安装位置。
如果您把 GlassFish 应用程序服务器安装到了缺省位置,请参考表 1 来找到安装位置。否则,请导航到您安装
GlassFish V2 应用程序服务器的位置。
表 1:应用程序服务器的缺省安装目录
Solaris OS
Linux |
root |
/opt/glassfish-v2 |
/opt/SUNWappserver |
Solaris OS
Linux |
user |
~/glassfish-v2 |
~/SUNWappserver |
| Mac OS X |
N/A |
/Applications/NetBeans/glassfish-v2b58g |
/Applications/NetBeans/NetBeans 6.0 |
| Windows |
N/A |
C:\Program Files\glassfish-v2-b58g |
C:\Sun\AppServer |
- 选中“注册本地缺省域”单选按钮并单击“下一步”。
- 输入域管理员的用户名和口令。
如果您在安装过程中接受了缺省值,用户名是 admin,口令是 adminadmin。
- 单击“完成”。
页首
打开 AsynchronousSample 项目
- 从 IDE 的主菜单选择“文件”>“新建项目”。
将打开“新建项目”向导。
- 在“类别”列表中,选择“样例项目”>“SOA”。
- 在“项目”列表中,选择 Asynchronous BPEL Process。

- 单击“下一步”。
- 在“项目名称”字段中,键入 AsynchronousSample。

- (可选)在“项目位置”字段中,使用“浏览”按钮来导航并选择一个不同的文件夹来用作 IDE 保存项目文件的位置。
- 单击“完成”。
“项目”窗口现在包含两个项目节点:一个是 BPEL项目 AsynchronousSample,另一个是复合应用程序项目 AsynchronousSampleApplication。
页首
在“项目”窗口中浏览 BPEL 和 JBI 项目
- 在“项目”窗口中,展开 AsynchronousSample 节点,再展开 Process Files 节点。
Process Files 节点包含这些条目:
- AsynchronousSample.bpel,BPEL 进程。
- AsynchronousSample.wsdl,进程的 Web 服务接口。
- AsynchronousSample.xsd,方案文件。
- AsynchronousSampleClient.bpel,测试客户端的进程。
- AsynchronousSampleClient.wsdl,客户端进程的 WSDL。
- 在“项目”窗口中,展开 AsynchronousSampleApplication 节点。JBI 部署项目包含:
- Process Files
- JBI Modules
- Test

- 双击 AsynchronousSample.bpel 节点。
注意以下几点:
- “源代码编辑器”包含一个 AsynchronousSample.bpel 的选项卡。
- AsynchronousSample 图显示在“设计视图”中。
“设计视图”是业务过程的可视化设计器。在这个视图中,您可以可视化地为业务过程建模。BPEL 设计工具会自动生成和可视化设计相对应的 BPEL 代码。
- BPEL 元素的调板将在“源代码编辑器”右侧打开。
- “导航器”窗口将显示 BPEL 进程的 BPEL 逻辑视图。

单击以放大
页首
在“项目”窗口中浏览 AsynchronousSampleClient
AsynchronousSample 项目是一个异步的 BPEL 进程。测试异步进程需要一个能接收异步回调的客户端。因此,项目还包含一个 AsynchronousSampleClient
BPEL 进程。AsynchronousSampleClient 进程的唯一目的就是加快 AsynchronousSample 的单元测试。
- 双击 AsynchronousSampleClient.bpel 节点。
IDE 会在“设计视图”里显示 AsynchronousSampleClient 图。
注意 AsynchronousSample(partnerLinkB)确实对 AsynchronousSampleClient 进行回调并返回响应。

- 双击 receiveCallback 以接收 AsynchronousSampleClient 进程的活动。
将打开 receiveCallback 的“属性编辑器”。
- 单击“关联”选项卡,选择“correlator”行并单击“编辑”。
将出现“编辑关联集”编辑器。
注意关联是如何被用来把这个响应关联到 AsynchronousSampleClient 的正确实例上的。

页首
把项目部署到应用程序服务器
注意 BPEL 项目不能直接部署。它必须作为 JBI 模块添加到一个复合应用程序项目中。然后你就可以部署该复合应用程序项目。部署项目使得应用程序服务器能够取得服务组合件,进而允许运行它的服务单元。
- 展开“AsynchronousSampleApplication”>“JBI 模块”。
确保已添加了 AsynchronousSample.jar 节点。

- 右键单击 AsynchronousSampleApplication 项目节点,并选择“部署”。
- 在“警告”对话框中,确保选择了“GlassFish V2”,并单击“确定”。
- 如果您在“输出”窗口看到了以下消息,证明部署成功:

- 如果看不到“输出”窗口,请选择“窗口”>“输出”>“输出”。
页首
测试 AsynchronousSampleApplication
- 在“项目”窗口,展开“AsynchronousSampleApplication”>“Test”>“NewTestcase0”。NewTestcase0
节点包含两个 XML 文件:
- Input.xml 用作输入
- Output.xml 用作输出
每当测试运行的时候,就会把当前的输出和 Output.xml 的内容进行比较:

- 右键单击 AsynchronousSampleApplication 项目节点,并从弹出菜单选择“测试”。
“输出”窗口中出现以下消息:

参见
页首