开发 Hello World 复合应用程序
最新更新日期:2006 年 11 月 14 日
在本教程中,您将创建一个名为 SynchronousSample 的简单 BPEL 模块项目和一个名为 SynchronousSampleApplication 的复合应用程序项目。本教程将向您说明如何设计简单的 XML 架构文件、简单的 WSDL 文件以及 BPEL 文件。您将了解如何设计 BPEL 流程以及部署该应用程序。您还会了解如何创建复合应用程序并对其执行测试运行。该流程是一个用于回显输入消息的简单 BPEL 流程,它可以同步地将结果返回到客户端。客户端通过调用请求-响应操作来启动 BPEL 流程。在结束流程并返回结果之前,将阻止客户端的操作。项目包含 WSDL 和 XML 架构文件以及用于测试的输入文件。
本教程可作为生成更复杂的复合应用程序的第一步。
先决条件
要了解本教程,您需要具备 Java 语言及其平台以及 NetBeans IDE 的一些基本知识或编程经验。
系统要求
本教程假定您的系统满足 NetBeans Enterprise Pack 5.5 发行说明的“系统要求”主题中指定的要求。
本教程所需的软件
在开始之前,您必须在计算机中安装以下软件:
- 包含 NetBeans Enterprise Pack 5.5 的 NetBeans IDE 5.5(下载)
- 要完成本教程中的部署步骤,必须安装 Sun Java System Application Server Platform Edition 9 Update 1。该应用服务器与 NetBeans Enterprise Pack 5.5 下载捆绑在一起。
目录
返回页首
配置教程环境
在部署应用程序之前,必须正确配置 Sun Java System Application Server 和 JBI 运行环境,并且使它们处于运行状态。
配置教程环境:
- 单击“运行环境”标签以打开“运行环境”窗口。
- 在“运行环境”窗口中,展开“服务器”节点。
- 如果“服务器”节点已包含 "Sun Java System Application Server 9" 节点,请转至步骤 5。
- 如果“服务器”节点不包含 "Sun Java System Application Server 9" 节点,请执行以下操作来添加应用服务器:
- 右键单击“服务器”节点,然后从弹出式菜单中选择“添加服务器”。
将打开“添加服务器实例”对话框。
- 在“选择服务器”页中,从“服务器”下拉列表中选择 "Sun Java System Application Server"。
- (可选)在“名称”字段中,接受缺省值,或键入要用来在 IDE 中标识服务器的名称。
- 单击“下一步”。
将打开“平台文件夹位置”页。
- 在“平台位置”字段中,使用“浏览”按钮导航并选择应用服务器的安装位置。
如果在安装过程中接受了缺省值,则该位置应为 C:\Sun\Appserver。
- 选择“注册本地缺省域”单选按钮。
- 单击“下一步”。
- 提供域管理员的用户名和口令。
如果在安装过程中接受了缺省值,则用户名应为 admin,口令为 adminadmin。
- 单击“完成”。
- 在“运行环境”窗口中,右键单击 "Sun Java System Application Server 9" 节点,然后选择“启动”。
如果“启动”选项不可用,则说明服务器已在运行,您可以跳过下一步。
- 一直等到“输出”窗口中显示以下消息:
“应用服务器启动完成。”
当服务器处于运行状态时,IDE 会在 "Sun Java System Application Server 9" 节点的旁边显示一个绿色箭头标记。
查看演示
返回页首
创建项目
在本部分中,您将创建一个名为 SynchronousSample 的 BPEL 模块项目。
创建 SynchronousSample 项目:
- 从 IDE 的主菜单中,选择“文件”>“新建项目”。
将打开“新建项目”向导。
- 在“类别”列表中,选择“面向服务的体系结构”节点。
- 在“项目”列表中,选择“BPEL 模块”节点。
- 单击“下一步”。
- 在“项目名称”字段中,键入 SynchronousSample。
- (可选)在“项目位置”字段中,使用“浏览”按钮导航并选择 IDE 用于存储项目文件的其他文件夹。
- 单击“完成”。
现在,“项目”窗口会包含一个名为 SynchronousSample 的 BPEL 模块项目的项目节点。
查看演示
返回页首
创建 XML 架构
在本部分中,您将在 BPEL 模块项目中添加一个新的 XML 架构文件,然后在架构中添加 XML 架构组件。
创建 SynchronousSample.xsd:
- 在“项目”窗口中,展开 "SynchronousSample" 项目节点,右键单击“流程文件”节点,然后选择“新建”>“文件/文件夹”。
将打开“新建文件”向导。
- 在“新建文件”向导中,执行以下操作:
- 在“选择文件类型”页的“类别”列表中选择 "XML" 节点,在“文件类型”列表中选择“XML 架构”节点,然后单击“下一步”。
- 在“文件名”字段中,键入 SynchronousSample。
- 单击“完成”。
在“项目”窗口中,“流程文件”节点现在会包含一个标记为 SynchronousSample.xsd 的子节点。同时,源代码编辑器中包含了 XML 架构文件 SynchronousSample.xsd 的标签,并且“架构”视图处于打开状态。
- 在“架构”视图中,单击“设计”按钮以打开 XML 架构编辑器的“设计”视图。
查看演示
在 XML 架构中添加复杂类型:
- 在“设计”视图的组件面板中,展开“XML 架构组件”类别并选择“复杂类型”图标。
如果未显示“组件面板”窗口,请从主菜单中选择“窗口”>“组件面板”。
- 将所选的组件拖到架构设计区域中,紧靠在“复杂类型”节点的下面。
IDE 将添加一个复杂类型节点并选定该复杂类型的名称 (newComplexType),准备让您进行更改。
- 在新节点中键入 simpleProcess,然后按 Enter 键。
现在,设计区域中将显示名为 simpleProcess 的新复杂类型。
查看演示
在 simpleProcess 中添加本地元素:
- 在组件面板的“XML 组件”类别中,选择“元素”图标,然后将所选的组件拖到架构设计区域的 "simpleProcess" 节点上。
IDE 将添加一个标记为 newElement 的元素节点。
- 如果未显示“属性”窗口,请选择“窗口”>“属性”。
- 在架构设计区域中,选择 "newElement" 节点。
- 在属性窗口中,选择“名称”属性的值字段以使其可以编辑,然后键入 paramA。
- 在属性窗口的“定义”属性中,单击省略号按钮。
将打开定义对话框。
- 在列表中展开“内置类型”节点,然后选择 "string" 节点。
- 单击“确定”。
查看演示
添加全局元素:
- 在组件面板的“XML 组件”类别中,选择“元素”图标,然后将所选的组件拖到设计区域中,紧靠在“元素”节点的下面。
IDE 将在架构设计区域的“元素”节点下面添加一个 newElement 组件。
- 在“设计”视图的架构设计区域中,选择 "newElement" 节点。
- 在属性窗口中,选择“名称”属性的值字段以使其可以编辑,然后键入 typeA。
- 在属性窗口的“定义”属性中,单击省略号按钮。
将打开“元素定义 - 定义”对话框。
- 在类型列表中,展开“复杂类型”节点,然后选择 "simpleProcess" 复杂类型节点。
- 单击“确定”。
在“设计”视图中,IDE 会立即在 "typeA" 元素节点的旁边显示选定的 "simpleProcess" 复杂类型。
- 要保存您所做的更改,请在“项目”窗口中选择 "SynchronousSample" 项目节点,然后从 IDE 的主菜单中选择“文件”>“全部保存”。
查看演示
返回页首
创建 WSDL 文档
在本部分中,您将在 BPEL 模块项目中添加 WSDL 文件,然后配置 WSDL 文档的组件。
创建 SynchronousSample.wsdl:
- 在“项目”窗口中,展开 "SynchronousSample" 项目节点,右键单击“流程文件”节点,然后选择“新建”>“WSDL 文档”。
将打开“新建 WSDL 文档”向导。
- 在“名称和位置”页中,执行以下操作:
- 在“文件名”字段中,键入 SynchronousSample。
- 选中“导入 XML 架构文件”复选框。
- 在“XML 架构”字段中,单击“浏览”按钮。
将打开“选择架构”对话框。此对话框会显示项目中的 XML 架构。
- 选择 "src/SynchronousSample.xsd",然后单击“确定”。
- 单击“下一步”。
将打开“抽象配置”页。
- 在“抽象配置”页的“输入”区域中,执行以下操作:
- 在“消息部件名称”列中,双击缺省值以使该字段可以编辑。
- 键入 inputType,然后按 Enter 键。
- 在“元素或类型”列中,单击省略号按钮。
将打开“选择元素或类型”对话框。
- 依次展开 "SynchronousSample" 节点、"src/SynchronousSample.xsd" 节点以及“元素”节点。
- 在“元素”节点下面,选择 "typeA" 节点,然后单击“确定”。
- 在“抽象配置”页的“输出”区域中,执行以下操作:
- 在“消息部件名称”列中,双击缺省值以使该字段可以编辑。
- 键入 resultType,然后按 Enter 键。
- 在“元素或类型”列中,单击省略号按钮。
将打开“选择元素或类型”对话框。
- 依次展开 "SynchronousSample" 节点、"src/SynchronousSample.xsd" 节点以及“元素”节点。
- 在“元素”节点下面,选择 "typeA",然后单击“确定”。
- 单击“下一步”。
将打开“具体配置”页。
注意:在执行下一步时,位于页面底部的错误消息将会消失。
- 在“绑定子类型”下面,选择“文档类型”单选按钮。
- 单击“完成”。
在“项目”窗口中,“流程文件”节点现在会包含一个标记为 SynchronousSample.wsdl 的子节点。
同时,源代码编辑器中包含了 WSDL 文件 SynchronousSample.wsdl 的标签,并且 "WSDL" 视图处于打开状态。
查看演示
返回页首
创建 BPEL 流程
创建 SynchronousSample.bpel:
- 在“项目”窗口中,右键单击“流程文件”节点,然后选择“新建”>“BPEL 流程”。
将打开“新建 BPEL 流程”向导。
- 在“文件名”字段中,键入 SynchronousSample。
- 单击“完成”。
在“项目”窗口中,“流程文件”节点现在会包含一个标记为 SynchronousSample.bpel 的子节点。
同时,源代码编辑器中包含了 BPEL 流程 SynchronousSample.bpel 的标签,并且 BPEL 设计器的“设计”视图处于打开状态。
查看演示
添加合作伙伴链接:
- 在“项目”窗口中,展开 "SynchronousSample" 项目节点和“流程文件”节点,然后选择 "SynchronousSample.wsdl" 节点。
- 将所选的文件 (SynchronousSample.wsdl) 从“项目”窗口拖到“设计”视图中。
将打开“PartnerLink1 [Partner Link] - 属性编辑器”。
- 接受缺省值,然后单击“确定”。
查看演示
添加接收活动:
- 在组件面板的“Web 服务”类别中,选择“接收”图标,然后将所选的活动拖到设计区域中 Process Start 活动和空活动之间。
IDE 将向您提供可视线索提示,以显示可放置所选活动的位置。
此操作将在“设计”视图中放置一个名为 Receive1 的接收活动。
- 双击 "Receive1" 活动。
将打开“Receive1 [Receive] - 属性编辑器”。
- 将“名称”字段中的值更改为 start。
- 从“合作伙伴链接”下拉列表中,选择 "PartnerLink1"。
IDE 将填充“操作”字段。
- 通过执行以下操作,创建一个新的输入变量:
- 单击“输入变量”字段旁边的“创建”按钮。
将打开“新建输入变量”对话框。
- 将“名称”字段中的值更改为 inputVar。
- 单击“确定”。
- 单击“确定”以关闭“Receive1 [Receive] - 属性编辑器”。
现在,“设计”视图会将该接收活动标记为 start。
查看演示
添加回复活动:
- 在组件面板的“Web 服务”类别中,选择“回复”图标,然后将所选的活动拖到设计区域中空活动和 Process End 活动之间。
IDE 将向您提供可视线索提示,以显示可放置所选活动的位置。
此操作将在“设计”视图中放置一个名为 Reply1 的回复活动。
- 双击 "Reply1" 活动。
将打开“Reply1 [Reply] - 属性编辑器”。
- 将“名称”字段中的值更改为 end。
- 从“合作伙伴链接”下拉列表中,选择 "PartnerLink1"。
IDE 将填充“操作”字段。
- 通过执行以下操作,创建一个新的输出变量:
- 确保选择了“正常响应”单选按钮。
- 单击“输出变量”字段旁边的“创建”按钮。
将打开“新建输出变量”对话框。
- 将“名称”字段中的值更改为 outputVar。
- 单击“确定”。
- 单击“确定”以关闭“Reply1 [Reply] - 属性编辑器”。
现在,“设计”视图会将该回复活动标记为 end。
查看演示
添加分配活动:
- 在设计区域中,选择空活动,单击鼠标右键,然后从弹出式菜单中选择“删除”。
- 在组件面板的“基本活动”类别中,选择“分配”图标,然后将所选的活动拖到设计区域中 start 活动和 end 活动之间。
此操作将在“设计”视图中放置一个名为 Assign1 的分配活动。
- 选择 "Assign1" 活动。
- 如果未显示“BPEL 映射器”窗口,请从主菜单中选择“窗口”>“BPEL 映射器”。
- 在 BPEL 映射器的左窗格中,展开“变量”下面的 "inputVar" 和 "inputType" 节点。
在 "inputType" 下面将显示 "paramA"。
- 在 BPEL 映射器的右窗格中,展开“变量”下面的 "outputVar" 和 "resultType" 节点。
在 "resultType" 下面将显示 "paramA"。
- 将 BPEL 映射器左窗格中的 "paramA" 拖到 BPEL 映射器右窗格中的 "paramA" 节点上。
此分配操作将输入语句复制到输出中。
- 要保存您所做的更改,请在“项目”窗口中选择 "SynchronousSample" 项目节点,然后从 IDE 的主菜单中选择“文件”>“全部保存”。
查看演示
返回页首
创建和部署复合应用程序
在部署 BPEL 模块项目之前,您必须在部署项目中添加 JBI 模块。通过部署该项目,可以将服务组装用于应用服务器,从而可以运行其服务单元。
创建复合应用程序项目并添加 JBI 模块:
- 从 IDE 的主菜单中,选择“文件”>“新建项目”。
将打开“新建项目”向导。
- 在“类别”列表中,选择“面向服务的体系结构”节点。
- 在“项目”列表中,选择“复合应用程序”节点。
- 单击“下一步”。
- 在“项目名称”字段中,键入 SynchronousSampleApplication。
- 单击“完成”。
现在,“项目”窗口会包含一个名为 SynchronousSampleApplication 的复合应用程序项目的项目节点。
- 在“项目”窗口中,右键单击 "SynchronousSampleApplication" 项目节点,然后从弹出式菜单中选择“添加 JBI 模块”。
将打开“选择项目”对话框。
- 选择本教程前面部分所创建的 SynchronousSample 项目,然后单击“添加项目 JAR 文件”。
将关闭“选择项目”对话框。
- 在“项目”窗口中,展开 "SynchronousSampleApplication" 项目节点,然后展开“JBI 模块”节点。
请注意,已添加了一个 "SynchronousSample.jar" 节点。
查看演示
部署复合应用程序:
- 右键单击 "SynchronousSampleApplication" 项目节点,然后选择“部署项目”。
如果“输出”窗口中显示类似于以下内容的消息,则说明部署已成功完成:
生成成功(总时间:11 秒)
查看演示
返回页首
测试 SynchronousSampleApplication
通过以下方法,可以改进复合应用程序项目:添加测试用例,绑定到操作,提供输入,然后使用测试程序。
测试 SynchronousSampleApplication:
- 在“项目”窗口中,展开 "SynchronousSampleApplication" 项目节点,右键单击“测试”节点,然后从弹出式菜单中选择“新建测试用例”。
将打开“新建测试用例”向导。
- 接受缺省测试用例名称 TestCase1,然后单击“下一步”。
- 在“选择 WSDL 文档”页中,展开“SynchronousSample - 流程文件”节点,选择 "SynchronousSample.wsdl",然后单击“下一步”。
- 在“选择要测试的操作”页中,选择 "SynchronousSampleOperation",然后单击“完成”。
在“项目”窗口的“测试”下面,已添加了一个新的 "TestCase1" 节点。
此节点包含了以下两个子节点:“输入”和“输出”。
同时,源代码编辑器中包含了输入文件 Input.xml 的标签。
- 如果源代码编辑器不包含 Input.xml 的标签,请在“项目”窗口中双击“输入”节点以打开该文件。
- 在源代码编辑器的 Input.xml 文件标签中,执行以下操作:
- 找到下面一行的位置:
<syn:paramA>?string?<syn:paramA>。
- 将 ?string? 替换为 Hello World。
该行应如下所示:
<syn:paramA>Hello World<syn:paramA>。
- 从 IDE 的主菜单中,选择“文件”>“全部保存”。
- 双击“输出”以查看其内容。
Output.xml 最初是空的。因此,第一次测试运行将使用实际输出来填充 Output.xml。后续测试运行会将实际输出与 Output.xml 内容进行比较。
- 在“项目”窗口中,右键单击 "TestCase1" 节点,然后从弹出式菜单中选择“运行”。
注意:第一次运行是一个特例,因为 Output.xml 为空,所以输出将写入到输出文件中。
请注意“JUnit 测试结果”窗口中出现的失败消息。
将打开“是否覆盖空的输出文件?”对话框。
- 单击“确定”。
- 在“项目”窗口中,右键单击 "TestCase1" 节点,然后从弹出式菜单中选择“运行”。
在第一次运行后,输出文件不再为空。将会保存该文件的内容,并且其内容不会被新结果所覆盖。
查看演示
返回页首