使用 NetBean 创建一个简单的 SOA 应用程序
撰稿人: Sherry Barkodar Bob May
2007 年 10 月 【修订号:V1-3】
此发布适用于 NetBeans IDE/6.0 Beta 2 版本
在本教程中,我们将创建一个简单的项目。然后在项目中添加一个 WSDL 文件并使用 WSDL 编辑器的 Partner 视图添加消息,伙伴链接类型,端口类型和操作。接着创建一个复合应用程序项目并使用复合应用程序(服务集合)编辑器修改该项目配置。本教程将演示在复合应用程序中应用文件绑定组件的一个基本场景。
预计时间:45 分钟
内容
教程需求
首先,确保已经了解本教程的必要条件。
必要条件
本教程假设您已经具备 Java 语言、平台以及 NetBeans IDE 的基础知识或者编程经验。
本教程需要的软件
开始之前,在您的计算机上下载并安装以下软件:NetBeans IDE 6.0,下载的所有软件能够从 NetBeans IDE 6.0 下载页面获得。 所有下载选项包括本教程需要的 SOA 包和 GlassFish V2 应用服务器。
返回顶部
配置并启动 GlassFish 应用服务器
下载并安装完整的 NetBean 6.0,该软件包含 GlassFish 应用服务器。NetBean 将在需要时自动启动应用服务器。
启动 GlassFish 应用服务器:
- 如果 Services 窗口不可见,选择 Window > Services。
- 在 Services 窗口中,展开 Servers 节点。
Servers 节点应该包含一个 GlassFish 应用服务器子节点。如果 GlassFish 应用服务器子节点没有出现,请查看 配置 GlassFish 应用服务器 。

- 鼠标右击 GlassFish 应用服务器并且选择 Start。
Output 窗口将显示应用程序启动的日志信息。如果 Output 窗口不可见,选择 Window > Output > Output
当消息应用服务器完全启动。会在 Output 窗口显示应用服务器正在运行。
注意:如果在 GlassFish 应用服务器节点上出现一个绿色的箭头标志,则表示服务器正在运行。
注意:部署应用程序到 GlassFish 应用服务器,自动启动 GlassFish 应用服务器。无需手动启动应用服务器。
注意:以下步骤说明怎样配置NetBean 6.0 IDE 来使用 GlassFish V2 应用服务器的备选版本。
配置 GlassFish V2 应用服务器。
-
您可能希望使用应用服务器的一个不同的版本,而不是 NetBean 6.0 提供的版本。例如,您希望从 GlassFish Community 网站上下载安装 GlassFish V2 应用服务器的一个较新的版本。
以下步骤说明怎样配置 NetBean 6.0 IDE 来使用 GlassFish V2 应用服务器的备选版本。假设您已经下载安装了应用服务器的备选版本。
- 在 Services 窗口中,鼠标右击 Servers 节点并从弹出菜单中选择 Add Server。
打开 Add Server Instance 对话框。
- 在 Choose Server 页面中,从 Server 下拉列表中选择 GlassFish V2。
- 单击 Next 按钮。
打开 Platform Folder Location 页面。
- 在 Platform Location 域中,使用 Browse 按钮导航并选择应用服务器的安装位置。
如果你将 GlassFish 应用服务器安装到默认位置, 使用 表 1 作为向导查找安装的位置。否则,导航到您安装 GlassFish V2 应用服务器的位置。
表 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 |
- 选择 Register Local Default Domain 单选按钮并且单击 Next 按钮。
- 输入域管理员的用户名和密码。
如果您在安装过程中使用了默认值,则用户名为 admin 密码为 adminadmin。
- 单击 Finish 按钮。
返回顶部
创建 BPEL 模块项目
在本节中,我们将创建一个名为 HelloSample 的 BPEL 模块项目。
创建项目:
- 从主菜单选择 File > New Project。
打开 New Project 向导。
- 在 Categories 列表中,选择 SOA 节点。
- 在 Projects 列表中,选择 BPEL Module 节点。
- 单击 Next 按钮。
- 在 Project Name 域中,键入 HelloSample。
- (可选)在 Project Location 域中,使用 Browse 按钮导航并选择一个不同的文件夹,IDE 在此文件夹中存放项目文件。
- 单击 Finish 按钮。
Projects 窗口现在包含一个名为 HelloSample 的 BPEL 模块项目的项目节点。
返回顶部
创建 WSDL 文件
在本节中,我们将在 BPEL 模块项目中添加一个 WSDL 文件 HelloSample.wsdl,然后使用 WSDL 编辑器的 Partner 视图来配置 WSDL 文件的组件。
创建 WSDL 文件:
- 在 Projects 窗口中,展开 HelloSample 项目节点,鼠标右击 Process Files 节点并选择 New > WSDL Document。
打开 New WSDL Document 向导。
- 在 File Name 域中,键入 HelloSample。
- 单击 Finish 按钮。
- 在 Projects 窗口中,IDE 将添加一个 HelloSample.wsdl 节点到 Process Files 节点下。
- 在 WSDL 编辑器中打开 HelloSample.wsdl 文件。
WSDL 编辑器有三个视图:Source,WSDL,和 Partner。
需要更多关于 WSDL 编辑器的信息请查看 WSDL 编辑器开发指南。.
- 打开 Properties 窗口。
如果您看不到 Properties 窗口,选择 Window > Properties。
- 打开 Navigator 窗口。

添加消息:
- 在 WSDL视图中,点击 Partner 按钮打开 WSDL 编辑器的 Partner 视图。
编辑器切换到 Partner 视图并打开 Palette。
如果 Palette 不可见,从主菜单中选择 Window > Palette。
- 在 Palette 的 WSDL Components 区域中选择 Message 图标。
- 将您的选项拖到 Partner 视图设计区域,放到 Messages 区域(在设计区域中的下部)中。
IDE 将添加一个名为 message1 的消息。

注意:如果您没有看到 Part Name 和 Part Element or Type 栏,点击 message1 方框中的向下箭头来展开此方框。
- 在 message1 的 Part Name 栏中,双击默认值,part1 使此域变为可以编辑。
- 键入 inputType 并敲击 Enter 键。
- 在 message1 的Part Element 或 Type 栏,点击省略号按钮,在打开的对话框中展开 Built-In Schema Types,选择 string 并单击 OK 按钮。
- 重复步骤 2-6 再创建一个 message2 消息并使用 resultType 作为 Part Name。
完成后,您的设计区域应该与如下所示图中的相似。

添加一个伙伴链接类型:
- 在 Palette 的 WSDL Components 区域中,选择 Partner Link Type 图标。
- 将您的选项拖到设计区域,放入 Partner Link Types 区域(位于设计区域的上部)。
IDE 将添加一个名为 partnerlinktype1 伙伴链接类型。现在,您可以创建新的任务和端口类型。任务和端口类型以垂直虚线绘制,在虚线顶端标有外部名。

- 在 partnerlinktype1 方框中,双击方框的下方的 role1。
这样,端口类型变为可编辑并且在此域中出现一个默认值 portType1。
- 敲击 Enter 键。
新的 portType1 被赋值。
- 在 Palette 的 WSDL Components 区域中,选择 Request-Response 图标。
- 将您的选项拖入设计区域,放在 portType1 下方。
IDE 添加一个 operation1 操作。

- 在 operation1 方框中,选择实线消息箭头,此箭头的标签为 <No Message Selected>。
- 在 Properties 窗口中,从 Message 下拉列表中选择 tns:message1。
标签将变为 message1。
- 在 operation1>下方,选择虚线消息箭头,此箭头标签为 <No Message Selected>。
- 在 Properties 窗口中,从 Message 下拉菜单中选择 tns:message2。
标签将变为 message2。
完成上述步骤后,您的设计区域应该与下图所示相似。

返回顶部
创建 BPEL 进程
在本节中,添加一个 BPEL 进程文件,HelloSample.bpel。接着在 BPEL 进程文件中添加三个任务。
创建 BPEL 进程文件:
- 在 Projects 窗口中,展开 HelloSample 项目节点,鼠标右击 Process Files 节点并且选择 New > BPEL Process。
打开 New BPEL Process 向导。
- 在 File Name 域中,键入 HelloSample。
- 单击 Finish 按钮。
- 在 Projects 窗口中,IDE 将添加一个 HelloSample.bpel 节点到 Process Files 节点下。
- 在 BPEL 设计器中打开 HelloSample.bpel 文件。
BPEL 设计器有两个视图:Source 和 Design。
需要有关 BPEL 设计器的更多信息,请查看 BPEL 设计器开发指南。
- 打开 Properties 窗口
如果您没有看到 Properties 窗口,选择 Window > Properties。
- Navigator 窗口被打开,显示 BPEL 进程文件的 BPEL 逻辑视图。
IDE 窗口看起来应该与下图所示相似。

添加一个伙伴链接:
- 在 Palette 的 Web Service 区域中,选择 Partner Link 图标并将您的选择拖到设计区域。
打开 Create New Partner Link 对话框。
- 使用默认值 (Name: PartnerLink1, WSDL File: /HelloSample.wsdl, 选择 Existing Partner Link Type 单选按钮) 单击 OK 按钮。
IDE 将在设计区域中添加一个伙伴链接。

添加一个接收任务:
- 在 Palette 的 Web Service 区,选择 Receive 图标。
- 将您的选项拖到设计区域的 HelloSample 方框,放置在 Process Start 和 Process End 任务之间。
IDE 为您提供可视化的提示来告诉您选项的放置位置。
此动作将一个名为 Receive1 的接受任务放置到 Design 视图中。
- 鼠标双击 Receive1 任务。
打开 Receive1 [Receive] - Property 编辑器。
- 在 Main 标签上,从 Partner Link 下拉列表选择 PartnerLink1。
IDE 将 operation1 填入 Operation 域。
- 通过以下步骤创建新的输入变量:
- 单击 Input Varialble 域旁边的 Create 按钮。
打开 New Input Variable 对话框。
- 改变 Name 域中的值为 inputVar。
- 单击 OK 按钮。
- 单击 OK 按钮关闭 Receive1 [Receive] - Property 编辑器。
Design 视图现在会显示一个 PartnerLink1 中的 operation1 与 Receive1 任务的连接。
添加一个答复任务:
- 在 Palette 的 Web Service 区,选择 Reply 图标。
- 将您的选项拖到设计区域,放置在 Receive1 任务和 Process End 任务之间
IDE 问您提供可视化的提示来告诉您放置此选项的位置。
此动作将一个名为 Reply1 的答复任务放置到 Design 视图中。
- 双击 Reply1 任务。
打开 Reply1 [Reply] - Property 编辑器
- 在 Main 标签上,从 Partner Link 下拉列表中选择 PartnerLink1。
IDE 将 operation1 填入 Operation 域
- 通过以下步骤创建新的输出变量:
- 确保 Normal Response 单选按钮被选择。
- 单击 Output Variable 域旁边的 Create 按钮。
打开 New Output Variable 对话框。
- 改变 Name 域中的值为 outputVar。
- 单击 OK 按钮。
- 单击 OK 按钮关闭 Reply1 [Reply] - Property 编辑器。
此时,设计视图中显示一个 Reply1 任务与 PartnerLink1 中的 operation1 之间的连接。

添加一个赋值任务:
- 在 Palette 中的 Basic Activities 区,选择 Assign 图标。
- 将您的选项拖到设计区域,放置在 Receive1 任务与 Reply1 任务之间。
此动作将一个名为 Assign1 的赋值任务放置到 Design 视图中。
- 选择 Assign1 任务。
- 如果 BPEL Mapper 窗口不可见,从主菜单选择 Window > Other > BPEL Mapper。
- 在 BPEL Mapper 的 Source 树形框(左边的方框)中,在 Variables 下方,展开 inputVar 节点。
一个 inputType 节点会出现在 inputVar 节点下方。
- 在 BPEL Mapper 的 Destination 树形框(右边的方框)中,在 Variables 下方,展开 outputVar节点。
一个 resultType 节点会出现在 outputVar 节点下方。
- 在 Source 树形框,选择 inputType 节点,将您的选项拖到 Destination 树形框中的 resultType 节点。
此任务将输入声明拷贝到输出中。

- 如要保存您的修改,在 Projects 窗口,选择 HelloSample 项目节点,并从主菜单中选择 File > Save All。
返回顶部
创建复合应用程序项目
在您部署 BPEL 模块项目之前,必须将 JBI 模块添加到部署项目中,对项目的部署,会使服务集合对应用服务器可用,这样应用服务器就能够启动服务单元。
创建复合应用程序项目:
- 从主菜单中,选择 File > New Project。
打开 New Project 向导。
- 在 Categories 列表中,选择 SOA 节点。
- 在 Projects list 列表中,选择 Composite Application 节点。
- 单击 Next 按钮。
- 在 Project Name 域中,键入 SampleCompositeApp。
- 单击 Finish 按钮。
此时 Projects 窗口包含一个名为 SampleCompositeApp 的 Composite Application 项目的项目节点。

返回顶部
使用复合应用程序(服务集合)编辑器
在本节中,您将使用复合应用程序(服务集合)编辑器来修改项目配置并建立 BPEL 模块项目。随后添加一个 WSDL 终端和一个连接,然后核实并修改自动生成的 WSDL 终端的属性。
使用复合应用程序(服务集合)编辑器来修改项目配置并构建 BPEL 模块项目:
- 在 Projects 窗口中,选择 SampleCompositeApp 项目节点并从弹出菜单中选择 Edit Application Configuration。
IDE 在复合应用程序(服务器集合)编辑器中打开 .casa 文件。编辑器 Design 视图设计区域包括三个部分:WSDL Ports,JBI Modules 和 External Modules。

- 在 Projects 窗口中,选择 HelloSample 项目节点并将您的选项拖到 SampleCompositeApp.casa 文件 Design 视图中的 JBI Modules 区域。

- 在编辑器工具栏,点击 Build Project 按钮新建 HelloSample BPEL 模块项目。
如完成此步骤:
- 状态栏的消息会显示以下消息:
Finished building build.xml (jbi-build)。
- Output 窗口看起来应该与下图所示相似。

- SampleCompositeApp.casa 文件的 Design 视图看起来与下图所示相似。

创建 WSDL 终端:
- 在 Palette 的 WSDL Bindings 区域中,选择 file 图标。
- 将您的选项拖到 SampleCompositeApp.casa 文件 Design 视图中的 WSDL Ports 区域。
IDE 添加一个标签为 casaPort1 的 WSDL 端口。

创建一个链接:
- 在 Design 视图中的 casaPort1 端口中,点击 consume endpoint 图标。
当您选择了这个终端,图标会改变颜色。
- 将您的选项拖到 JBI Modules 区域中 (BPEL) HelloSample 框的 role1_myRole。
IDE 将创建一个新连接。

核实并修改自动生成的 WSDL 终端的属性:
- 如果 Navigator 窗口不可见,从主菜单选择 Window > Navigating > Navigator。
- 在 Navigator 窗口,从下拉菜单中选择 Logical View。
- 展开 WSDL Ports > casaPort1 > casaBinding1 > operation1 > input1 选择 file:message 节点。

- 如果 Properties 窗口不可见,从主菜单中选择 Window > Properties。
Properties 窗口显示您在 Navigator 窗口选择的 file:message 节点的属性。
- 在 Properties 窗口中,修改属性,使其与下列所示值相同:
| use |
literal |
| fileName |
input.txt |
| pollingInterval |
5000 |
- 在 Navigator 窗口中,展开 WSDL Ports > casaPort1 > casaBinding1 > operation1 > output1 并选择 file:message 节点。

- 在 file:message 的 Properties 窗口中,将 output.txt 赋值给 fileName 属性。
- 在 Navigator 窗口中,展开 WSDL Ports > casaPort1 > casaPort1 并选择 file:address 节点。

- 在 file:address 的 Properties 窗口中,在 fileDirectory 属性中,将 C:\Temp 替换为字符串 c:\test。
- 如要保存您的修改,选择 SampleCompositeApp 项目节点,并从主菜单中选择 File > Save All。
返回顶部
部署并测试复合应用程序
在本节中,我们将部署复合应用程序项目,然后将测试已部署的应用程序。如果您跳过了本教程前面的步骤: 配置和创建 Sun Java 系统应用服务器,您必须在部署和测试任务之前执行这些步骤。
部署复合应用程序
- 在 Projects 窗口中,选择 SampleCompositeApp 项目节点,点击鼠标右键并选择 Deploy 按钮。
一个与下列消息相似的消息会出现在 Output 窗口:
BUILD SUCCESSFUL (total time: 6 seconds)
测试复合应用程序
- 使用编辑器创建一个新的文本文件,在此文本文件中包含字符串 Hello World! ,保存此文件为 input.txt,保存在 c:\test 文件夹中。
正在运行的进程会进行以下操作:
- 创建 input.txt<UUID> _processed 在 archive 文件夹下。
- 在 C:/test 文件夹中创建 output.txt,此文件中的内容与 input.txt 相同,在本文中,其内容为字符串 Hello World!。
如果此操作没有发生,将会有一个错误处理进行以下操作:
- 创建 input.txt<UUID> _error 在 c:\test\filebc_tmp 文件夹下。
返回顶部
结束语
在本教程中,我们创建了一个 BPEL Module 项目,随后在项目中添加了一个 WSDL 文件并使用 WSDL 编辑器的 Partner 视图添加消息,伙伴链接类型,端口类型和操作。然后,我们创建了一个复合应用程序项目并使用组合应用项目(服务集合)编辑器来修改项目配置。您还使用了复合应用程序中的文件绑定组件。
返回顶部
下一步
请阅读
返回顶部
>> 更多 NetBean IDE/SOA 文件