由 Sherry Barkodar、Bob May 创建和维护
2007 年 10 月 [修订号:V1-3]
本文适用于 NetBeans IDE 6.0 发行版
在本节中,我们将创建一个简单的 SOA 项目。然后在项目中添加一个 WSDL 文件并使用 WSDL 编辑器的 Partner 视图添加消息,伙伴链接类型(partner link type),端口类型和操作。接着创建一个复合应用程序项目并使用 Composite Application(Service Assembly)编辑器修改项目配置。本教程还将演示复合应用程序中应用文件绑定组件(File Binding Component)的基本场景。
配置和启动 GlassFish 应用服务器。
下载并安装了完整的 NetBean 6.0 之后,其中将包含 GlassFish 应用服务器。NetBean 将在需要时自动启动应用服务器。
启动 GlassFish 应用服务器:
- 如果“服务”窗口不可见,请选择“窗口”>“服务”选项。
- 在“窗口”窗口中,展开“服务器”节点。
“服务器”节点应该包含一个“GlassFish 应用服务器”子节点。如果“GlassFish 应用服务器”子节点没有出现,请参阅 配置GlassFish应用服务器。

- 右键单击“GlassFish 应用服务器” 节点并选择“启动”选项。
“输出”窗口将显示关于应用程序启动的日志信息:如果“输出”窗口不可见,则选择“窗口”>“输出”>“输出”选项
当“输出”窗口中出现“Application server startup complete.”消息时,则表示应用服务器已经开始运行。
注意:如果“GlassFish应用服务器”节点上出现了一个绿色的箭头标志,则表示服务器正在运行。
注意:在 GlassFish 应用服务器中部署一个应用程序将自动启动 GlassFish 应用服务器。这样,我们就不需要手动启动 GlassFish 应用服务器。
注意:以下步骤将演示如何配置 NetBeans 6.0 IDE 使用另一个版本的 GlassFish V2 应用服务器。
配置 GlassFish V2 应用服务器:
-
您可能希望使用不同版本的应用服务器,而不是 NetBeans 6.0 所提供的版本。比如说,您可以从 GlassFish 社区 站点下载并安装一个更新版本的 GlassFish V2。
以下步骤将演示如何配置 NetBean 6.0 IDE 使用 GlassFishV2 应用服务器的备选版本。假定您已经下载并安装了另一个版本的应用服务器。
- 在“服务”窗口中,右键单击“服务器”节点并从弹出菜单中选择“添加服务器”选项。
此时将打开“添加服务器实例”对话框。
- 在“选择服务器”页面中,从下拉列表中选择 GlassFish V2 选项。
- 单击“下一步”按钮。
此时将打开“平台文件夹位置”页面。
- 在“平台位置”字段中,使用“浏览”按钮导航到应用服务器的安置位置并选择它。
如果将 GlassFish 应用服务器安装在默认位置,那么可以使用 表 1 作为查找安装位置的指导。否则,导航到您安装 GlassFishV2 应用服务器的位置。
表 1:应用服务器的默认安装目录
Solaris OS
Linux |
root |
/opt/SUNWappserver |
/opt/SDK |
Solaris OS
Linux |
user |
~/SUNWappserver |
~/SDK |
| Mac OS X |
N/A |
~/SUNWappserver |
~/SDK |
| Windows |
N/A |
C:\Sun\AppServer |
C:\Sun\SDK |
- 选中“注册本地域” 单选按钮,然后单击“下一步”按钮。
- 为域的管理员输入用户名和口令。
如果您在安装过程中使用了认值,则用户名和密码分别为 admin 和 adminadmin。
- 单击“完成”按钮。
回到顶部
创建 BPEL 模块项目
在本节中,我们将创建一个名称为 SynchronousSample 的 BPEL 模块项目。
创建 SynchronousSample 项目:
- 从主菜单中,选择“文件”>“新建项目”选项。
此时将打开“新建项目”向导。
- 在“”类别列表中,选择 SOA 节点;并在“项目”列表中,选择 BPEL 模块 节点。
- 单击“下一步”按钮。
- 在“项目名称”字段中,输入 SynchronousSample。
- (可选)在“项目位置”字段中,使用“浏览”按钮导航到 IDE 将要存储 EJB 项目文件的位置并选择它。
- 单击“完成”按钮。
现在,“项目”窗口中已经含有一个 BPEL 模块项目节点,其名称为 SynchronousSample。

回到顶部
创建 XML 模式
在本节中,我们将在 BPEL 模块项目中添加一个新 XML 模式,然后再在模式中添加一些 XML 模式组件。
创建 SynchronousSample.xsd:
- 在“项目”窗口中,展开 SynchronousSample 项目节点,然后右键单击 流程文件 节点并选择“新建”>“其他”选项。
此时将打开“新建文件”向导。
- 在“新建文件”向导中,执行以下操作:
- 在“选择文件类型”页面的“类别”列表中,选择 XML 节点。然后,在“文件类型”列表中,选择 XML 模式 节点。
- 在“文件名称”字段中,输入 SynchronousSample。
- 单击“完成”按钮。
在“项目”窗口中,流程文件 节点已经含有一个选项卡为 SynchronousSample.xsd 的子节点。源编辑器中含有一个 XML 模式文件的选项卡,即 SynchronousSample.xsd。其中打开了“模式”视图。
- 在“模式”视图中,单击“设计”按钮打开 XML 模式编辑器的“设计”视图。

在 XML 模式中添加复杂类型:
- 在“设计”视图的“组件面板”中,展开 “XML模式组件”部分并选择“复杂类型”图标。
- 将选定内容立即拖动到“复杂类型”节点下面的模式设计区域中。
IDE 将添加一个复杂类型节点,并且将选中复杂类型(newComplexType)的名称供用户修改。
- 在新节点中键入 simpleProcess 并按下回车键。
现在,“设计”区域中将显示刚才创建的新复杂类型,其名称为 simpleProcess。

在 simpleProcess 中添加本地元素:
- 在“组件面板”的“XML 组件”部分中,选择“元素”图标并将所选内容拖动到模式设计区域的 simpleProcess 节点上面。
IDE 将添加一个选项卡为 newElement 的元素节点。
- 如果“属性”窗口不可见,则选择“窗口”>“服务”选项。
- 在模式设计区域中,选择 newElement 节点。
- 在 “属性”窗口中,选择 Name 属性的值字段使它变为可编辑状态,然后键入 paramA。
- 在“属性”窗口的 Definition 属性中,单击省略号按钮。
此时将打开“定义”对话框。
- 在列表中,展开“内置类型”节点,然后选择“字符串”节点。
- 单击“确定”按钮。
IDE 将更新“设计”视图。

添加全局元素:
- 在“组件面板”的“XML 组件”部分中,选择“元素”图标并将所选内容拖动到设计区域中“元素”节点的正下方。
IDE 将在模式设计区域的“元素”节点下面添加一个 newElement 组件。
- 在“设计”视图的模式设计区域中,选择 newElement 节点。
- 在 “属性”窗口中,选择 Name 属性的值字段使它变为可编辑状态,然后键入 processApplicElement。
- 在“项目”窗口的“定义”属性中,单击省略号按钮。
此时将打开“定义”对话框(元素的定义)。
- 在列表中,展开“复杂类型”节点,然后选择 simpleProcess 复杂类型节点。
- 单击“确定”按钮。
在 IDE 的“设计”视图中,typeA 元素节点旁边显示了所选的 simpleProcess 复杂类型。

- 要保存修改,在 “项目”窗口中,选择 SynchronousSample 项目节点,并从主菜单中选择“文件”>“保存所有”选项。
回到顶部
创建 WSDL 文档
在本节中,我们将在 BPEL 模块项目中添加一个 WSDL 文件,然后再配置 WSDL 文档的组件。
创建 SynchronousSample.wsdl:
- 在 “项目”窗口中,展开 LoanRequestor 项目节点,然后右键单击“流程文件”节点并选择“新建”>“WSDL文档”选项。
此时将打开“新建 WSDL 文档”向导。
- 在“名称和位置”页面中,执行以下操作:
- 在“文件名称”字段中,输入 SynchronousSample 。
- 选中“导入 XML 模式文件”复选框。
- 在“XML 模式”字段中,单击“浏览”按钮。
此时将打开“添加导入”对话框。该对话框将显示可以导入的 XML 模式。
- 展开 By File > LoanRequestor >流程文件节点,然后选择 LoanRequestor.xsd。
确保在 Import 列中选中 LoanRequestor.xsd 行的复选框。

- 单击“确定”。
- 单击“下一步”按钮。
此时将打开“抽象配置”页面。
- 在“抽象配置”页面的“输入”区域中,执行以下操作:
- 在 Message Part Name 列中,双击默认值(part1)使该字段变为可编辑状态。
- 键入inputType并敲击回车键。
- 在 Element Or Type 列中,单击省略号按钮。
此时将打开“选择元素或类型”对话框。
- 展开 By File > LoanRequestor >流程文件节点,然后选择 LoanRequestor.xsd。
注意: 您可能需要滑动到“选择元素或类型”对话框中列表的顶部才能看到 By File 节点。
- 在 Elements 节点下面,选择 processApplicElement 节点,然后单击“确定”按钮。
- 在“抽象配置”页面的“输出”区域中,执行以下操作:
- 在 Message Part Name 列中,双击默认值(part1)使该字段变为可编辑状态。
- 键入 resultType 并按下回车键。
- 在 Element Or Type 列中,单击省略号按钮。
此时将打开“选择元素或类型”对话框。
- 展开 By File > LoanRequestor >流程文件节点,然后选择 LoanRequestor.xsd。
注意: 您可能需要滑动到“选择元素或类型”对话框中列表的顶部才能看到 By File 节点。
- 在 Elements 节点下面,选择 processApplicRespElement 节点,然后单击“确定”按钮。
完成的“抽象配置”页面应类似于下图。

- 单击“下一步”按钮。
此时将打开“抽象配置”页面。
- 在“绑定”子节点下面,选择“文档字面值”单选按钮。
- 单击“完成”按钮。
在“项目”窗口中,“流程文件”节点已经含有一个选项卡为 SynchronousSample.xsd 的子节点。源编辑器中含有一个 WSDL 文件的选项卡,即 SynchronousSample.wsdl。其中打开了 WSDL 视图。

回到顶部
创建 BPEL 流程
在本节中,添加一个 BPE 进程文件,.bpel。接着在 BPEL 进程文件中添加三个任务。
创建 SynchronousSample.bpel:
- 在 “项目”窗口中,右键单击 “流程文件”节点并选择“新建”>“BPEL流程”选项。
此时将打开“新建 BPEL 流程”向导。
- 在“文件名称”字段中,输入 SynchronousSample。
- 单击“完成”按钮。
在“项目”窗口中,“流程文件”节点已经含有一个选项卡为 SynchronousSample.bpel 的子节点。
“源编辑器”中含有一个 BPEL 流程的选项卡,即 SynchronousSample.bpel。其中打开了 BPEL 设计器的“设计”视图。

添加一个伙伴链接:
- 确保 SynchronousSample.bpel 的“设计”视图在源编辑器中为活动窗口。
- 在“项目”窗口中,展开 SynchronousSample 项目节点,然后展开“流程文件”节点并选择 SynchronousSample.wsdl 节点。
- 将所选内容(SynchronousSample.wsdl)从 “项目”窗口拖动“设计”视图中。
此时将打开“创建新伙伴链接” 对话框。
- 接受默认设计并单击“确定”按钮。
IDE 在设计区域中添加一个伙伴链接。

添加接收活动:
- 确保 SynchronousSample.bpel 的“设计”视图在源设计器中为活动窗口。
- 在组件面板的“Web 服务”区域中,选择“接收”图标。
- 将您的选项拖到设计区域的 SynchronousSample 流程框中,放置在 Process Start 和 Process End 任务之间。
IDE 为您提供可视化的提示来告诉您选项的放置位置。
此动作将一个名为 Receive1 的接受任务放置到“设计”视图中。
- 鼠标双击 Receive1 活动。
将打开 Receive1 [Receive] - Property 编辑器。
- 在主选项卡中,将“名称”字段中的值修改为 start。
- 从“合作伙伴”下拉列表中,选择 PartnerLink1 选项。
IDE 将在“操作”字段中填入 SynchronousSampleOperation。
- 通过以下步骤创建新的输入变量:
- 单击“输入变量”字段旁边的“创建”按钮。
此时将打开“新建输入变量”对话框。
- 将“名称”字段中的值修改为 inputVar。
- 单击“确定”。
- 单击“确定”按钮关闭 Receive1 [Receive] - Property 编辑器。
“设计”视图现在会在 SynchronousSample 流程框中的 PartnerLink1 与 start 任务之间显示一个的连接。

添加回复活动:
- 确保 SynchronousSample.bpel 的“设计”视图在“源编辑器”中为活动窗口。
- 在组件面板的“Web服务”区域中,选择“回复”图标。
- 将您的选项拖到设计区域,放置在 Receive1 任务与 Reply1 任务之间。
IDE 将为用户提供可视化提示,用户可根据提示放下所选内容。
此动作将一个名为 Reply1 的回复任务放置到“设计”视图中。
- 双击 Reply1 活动。
此时将打开 Reply1 [Reply] - Property 编辑器。
- 在主选项卡中,将“名称”字段中的值修改为 start。
- 从“合作伙伴”下拉列表中,选择 PartnerLink1 选项。
IDE 将在“操作”字段中填入 SynchronousSampleOperation。
- 通过以下步骤创建新的输出变量:
- 确保选中了“普通响应”单选按钮。
- 单击“输出变量”字段旁边的“创建”按钮。
此时将打开“新建输出变量”对话框。
- 将“名称字段”中的值修改为 outputVar。
- 单击“确定”。
- 单击“确定”按钮关闭 Reply1 [Reply] - Property 编辑器。
“设计”视图现在会在 SynchronousSample 流程框中的 end 活动与 PartnerLink1 任务之间显示一个连接。

添加一个赋值活动:
- 确保 SynchronousSample.bpel 的“设计”视图在“源编辑器”中为活动窗口。
- 在组件面板中的“基本活动”区域中,选择“赋值”图标。
- 将您的选项拖到设计区域,放置在 start 活动与 end 活动之间。
该操作将在“设计”视图中放置一个名称为 Assign1 的赋值活动。
- 选择“赋值”活动。
- 如果 BPEL 映射器窗口不可见,则从主菜单中选择“窗口”>“其他”>“BPEL映射器”选项。
- 在BPEL 映射器的“源”树形框(左边的方框)中,在“变量”下方,展开 inputVar > inputType 节点。
一个 inputType 节点会出现在 inputVar 节点下方。
- 在BPEL 映射器的“源”树形框(左边的方框)中,在“变量”下方,展开 outputVar > resultType 节点。
一个 paramA 节点会出现在 resultType 节点下方。
- 在“源”树形框中,选择 inputType 节点,将您的选项拖到“目标”窗格中的 paramA 节点。此任务将输入声明拷贝到输出中。

- 要保存修改,在“项目”窗口中,选择 SynchronousSample 项目节点,并从主菜单中选择“文件”>“保存所有”选项。
回到顶部
创建和部署复合应用程序
部署 BPEL 模块项目之前,首先需要在部署项目中添加 JBI 模块。部署项目将使应用服务器可以使用服务组合件功能,从而允许服务单元运行。
创建复合应用程序项目并添加 JBI 模块:
- 从主菜单中,选择“文件”>“新建项目”选项。
此时将打开“新建项目”向导。
- 在“”类别列表中,选择 SOA 节点;并在“项目”列表中,选择“复合应用程序”节点。
- 单击“下一步”按钮。
- 在“项目名称”字段中,输入 SynchronousSampleApplication。
- 单击“完成”按钮。
现在,“项目”窗口中已经含有一个复合应用程序项目节点,其名称为 SynchronousSampleApplication。
- 在“项目”窗口中,右键单击 SynchronousSampleApplication 项目节点并从弹出菜单中选择“添加 JBI 模块”选项。
这将打开“选择项目”对话框。
- 选择之前创建的 SynchronousSample 项目,并单击“添加项目 JAR 文件”按钮。
这将打开“选择项目”对话框。
- 在“项目”窗口中,展开 SynchronousSampleApplication 项目节点,然后再展开“JBI 模块”节点。
注意已经添加了 SynchronousSample.jar 节点。

部署复合应用程序
- 右键单击 SynchronousSampleApplication 项目节点,然后选择“部署项目”选项。
如果
BUILD SUCCESSFUL 消息出现在“输出”窗口中,则表示部署成功。
回到顶部
要增强复合应用程序的功能,我们可以添加一些测试用例并绑定到操作,然后提供输入并使用测试程序。
测试 SynchronousSampleApplication 复合应用程序:
- 在“项目”窗口中,展开 SynchronousSampleApplication 项目节点,右键单击“测试”节点并从弹出菜单中选择“新测试用例”选项。
此时将打开“新测试用例”向导。
- 接受默认测试名称 TestCase1 并单击“下一步”按钮。
- 在“选择 WSDL 文档”页面中,展开 SynchronousSample 节点,选择 SynchronousSample.wsdl 并单击“下一步”按钮。
- 在“项目”窗口中,IDE 已经在“测试”节点下面添加了一个新节点,其名称为 TestCase1。
- 该节点含有两个子节点:Input 和 Output。
- “源编辑器”中含有一个输入文件的选项卡,即 Input.xml。

注意: 如果“源编辑器”未包含一个 Input.xml 选项卡,则在“项目”窗口中双击 Input 节点打开该文件。
- 选择 Input.xml 文件的“源编辑器”选项卡,执行以下操作:
- 找到以下代码:
<syn:paramA>?string?<syn:paramA>。
- 将 ?string? 替换为 Hello World。
代码行如下所示:
<syn:paramA>Hello World<syn:paramA>.
- 从主菜单中,选择“文件”>“保存所有”选项。
- 在“项目”窗口中,双击“测试”> TestCase1节点下面的“输出”节点,以检查该文件的内容。
我们发现,output.xml 文件最初是空的。因此,第一次测试运行将在 output.xml 中填充实际输出。第二次测试运行将比较实际输出与 output.xml 中的内容。
- 在“项目”窗口中,右键单击 TestCase1 节点并从弹出菜单中选择“运行”选项。
注意: 但在特殊情况下,即 Output.xml 最初为空时,则会将输出内容写入到“输出”窗口中。注意“输出”窗口中的失败消息。
此时将打开“覆盖空输出?” 对话框。
- 单击“确定”。
- 在“项目”窗口中,右键单击 TestCase1 节点并从弹出菜单中选择“运行”选项。
第一次运行之后,“输出”窗口不再为空。文件的内容已保存并且未被新结果重写。

回到顶部
结束语
在本教程中,我们创建了一个简单的 BPEL 模块项目 SynchronousSample 和一个复合应用程序项目 SynchronousSampleApplication。然后设计了一个 XML 模式文件和一个 WSDL 文件。我们已经学习了如何设计和部署 BPEL 流程:我们还学习了如何创建和执行复合应用程序的测试运行。
完成本教程中的步骤之后,我们生成了一个简单的同步 BPEL 流程项目(IDE 的“新建”>“项目”>“示例”> SOA >“同步 BPEL 流程”)。