开发一个简单的异步 BPEL 流程
本教程概述示例项目 AsynchronousSample,演示如何使用 NetBeans IDE 6.0 以及所有必要的运行时部署、执行、测试异步 BPEL 流程。
该过程是一个回显过程,但它是异步回显,不是同步回显。客户端向过程发送一条消息。过程接收输入消息并立即返回。然后过程异步调用原客户端并发回该消息。在 BPEL 流程的长时间运行期间(计算结果需要很长时间)使用异步过程。通过对客户端执行调用将结果返回给客户端。在本教程中,将使用一个简单的 BPEL 项目(名为 AsynchronousSample)和一个复合应用程序(名为 AsynchronousSampleApplication)。项目包括 WSDL 和 Schema 文件、部署描述符、要测试的输入文件。此过程的 web 服务接口是一个异步操作。
预计时间:30 分钟
教程要求
在开始之前,确保对本节的系统要求有所了解。
前提条件
本教程假设您已经具备 Java 语言、平台以及 NetBeans IDE 的基础知识或编程经验。
系统要求
本教程假定您的系统满足 NetBeans IDE 6.0 发行说明 的“系统要求”部分所指定的要求。
本教程所需的软件
开始之前,需要在您的计算机中安装以下软件:附带 SOA 及 GlassFish 应用服务器的 NetBeans IDE 6.0,可通过 NetBeans IDE 6.0 下载页面 获得,需选中 All 选项。
回到顶部
配置和启动 GlassFish 应用服务器。
当我们安装完整版本的 NetBeans 6.0 时,GlassFish 应用服务器将一并安装。NetBeans IDE 将在需求时自动启动应用服务器。
启动 GlassFish 应用服务器:
- 如果“服务”窗口不可见,则选择“窗口”>“服务”选项。
- 在“服务”窗口中,展开“服务器”节点。
“服务器”节点中应该包含 GlassFish Application Server 子节点。如果未出现 GlassFish Application Server 节点,请参阅 配置 GlassFish 应用服务器。

- 右键单击 GlassFish 应用服务器节点并选择“启动”。
“输出”窗口将显示关于应用程序启动的日志信息:如果“输出”窗口不可见,请选择“窗口” > “输出” > “输出”选项。
如果 Application server startup complete 消息出现在输出窗口中,则表示应用服务器正在运行。
注意: 如果 GlassFish 应用服务器节点上出现了一个绿色的箭头标志,则表示服务器正在运行。
注意:在 GlassFish 应用服务器中部署应用程序将自动启动 GlassFish 应用服务器。这样,我们就不需要手动启动该应用服务器。
注意:以下步骤将演示如何配置 NetBeans 6.0 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”。
- 在“项目”列表中选择“异步 BPEL 流程”。

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

- (可选)在“项目位置”字段中,使用“浏览”按钮导航到 IDE 将要存储 EJB 项目文件的位置并选择它。
- 单击“完成”。
“项目”窗口现在包含两个项目节点:一个对应于 BPEL 项目(名为 AsynchronousSample);另一个对应于复合应用程序(名为 AsynchronousSampleApplication)。
回到顶部
在“项目”窗口中浏览 BPEL 和 JBI 项目
- 在“项目”窗口中,展开 LoanProcessor 项目节点,然后再展开流程文件节点。
流程文件节点包含以下项:
- AsynchronousSample.bpel,BPEL 流程
- AsynchronousSample.wsdl,过程 web 服务接口
- AsynchronousSample.xsd,模式文件
- AsynchronousSampleClient.bpel,测试客户端过程
- AsynchronousSampleClient.wsdl,客户端过程的 wsdl
- 在“项目”窗口中,展开 AsynchronousSampleApplication 节点。JBI 部署项目包括:

- 双击 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 的“属性编辑器”。
- 单击“关联”选项卡,选择关联程序行并单击“编辑”。
出现“编辑关联设置编辑器”。
注意将此响应关联到正确 AsynchronousSampleClient 的方式。

回到顶部
在应用服务器上部署项目
注意,不能直接部署 BPEL 项目。必须将该项目作为 JBI 模块添加到复合应用程序项目中。然后才能部署复合应用程序项目。部署项目将使应用服务器可以使用服务组装功能,从而允许服务单元运行。
- 展开 AsynchronousSampleApplication > JBI 模块。
确保添加了 AsynchronousSample.jar 节点。

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

- 如果未显示“输出”窗口,请选择“窗口”>“输出”。
回到顶部
测试 AsynchronousSampleApplication
- 在“项目”窗口中,展开 AsynchronousSampleApplication >测试> NewTestcase0。NewTestcase0 节点包含两个 XML 文件:
- Input.xml,用于输入
- Output.xml,用于输出
每次运行测试时,会比较当前输出和 Output.xml 的内容。

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

更多信息