| 本教程介绍了如何在 Sun Java Studio Creator 集成开发环境 (Integrated Development Environment, IDE) 中将外部 Web 服务添加到“服务器”窗口,以及如何在 Web 应用程序中使用该 Web 服务。
|
|
目录
|
![[spacer]](/im/a.gif) |
 |
要使用本教程,必须在您的系统上安装 Sun Java Studio Creator 集成开发环境 (Integrated Development Environment, IDE)。如果您熟悉 IDE 的基本内容会更有帮助。 Sun Java Studio Creator 入门指南对您了解 IDE 提供了很有用的内容。
添加 Web 服务
要使 Web 服务可供 Web 应用程序使用,请将其 Web 服务描述语言 (Web Service Description Language, WSDL) 文件的 URL 添加到 IDE 的“服务器”窗口中。
- 在“服务器”窗口中,右键单击“Web 服务”节点,然后选择“添加 Web 服务”。
- 在“添加 Web 服务”对话框中,单击“本地文件”单选按钮,然后单击“浏览”。
- 在“打开”对话框中,选择
TravelWS.wsdl 文件,然后单击“打开”。
IDE 将解析 WSDL 文件并生成 Java 类,以便您可以从 Web 应用程序使用该 Web 服务。
- 在“添加 Web 服务”对话框中,单击“添加”。
一个新的节点 TravelWS 将出现在“服务器”窗口中,如下图所示。
图 1:“服务器”窗口中的 TravelWS 节点 |
测试 Web 服务
- 在“服务器”窗口中,展开 TravelWS Web 服务节点。将出现方法列表。右键单击
getPersons 方法,然后从弹出式菜单中选择“测试方法”,如下图所示。
图 2:测试 TravelWS Web 服务 |
将显示“测试 Web 服务方法”对话框。
getPersons 方法未采用任何参数。
- 单击“提交”按钮。测试成功后,在对话框的“结果”部分将显示一个名为
PersonDTO 的文件夹。单击“关闭”按钮以关闭“测试 Web 服务方法”对话框。
如果打开了一个错误对话框,其中显示 InvocationTargetException 错误消息,请确保部署服务器和捆绑的数据库服务器正在运行。
创建 Web 应用程序并添加 Web 服务客户端
在可以使用 Web 服务后,请创建一个使用 Web 服务为您的应用程序提供数据的 Web 应用程序。您在本教程中创建的应用程序会从 TravelWS Web 服务中检索旅行路线信息,并将其显示在页面上,如下图所示。
图 3:TravelWS Web 服务应用程序的页面设计 |
创建该 Web 应用程序的过程与创建一个使用 Enterprise Java Beans 组件的 Web 应用程序的过程(如 使用 EJB 组件所述)类似。
- 创建一个新的 JavaServer Faces (JSF) Web 应用程序项目,并将其命名为
ItineraryWS。
将出现一个新项目,并且其初始页会显示在可视设计器中。
- 从“服务器”窗口中拖动“Web 服务”节点下的 "TravelWS",并将其放在页面上。
travelWSClient1 将显示在“概要”窗口中。
设计 TravelWS 应用程序页
接下来的步骤将说明如何创建一个与下图所示类似的页面。
图 4:Web 服务的页面设计 |
- 将一个“标签”组件从组件面板的“基本”类别拖放到页面的左上角,键入
Travel Itinerary,然后按 Enter 键。
- 将一个“下拉列表”组件从组件面板的“基本”类别拖动到页面上,并将其放在“标签”组件的下方。
- 在“属性”窗口中,将其 id 更改为
nameDropDown。
- 右键单击“下拉列表”组件,然后选择“更改时自动提交”。
“更改时自动提交”功能可确保用户在更改下拉列表组件的选择内容时,应用程序会重新提交并更新页面。
在本教程的后面部分,将使“下拉列表”绑定到提供游客名单的 TravelWS Web 服务方法中。
- 将一个“表”组件从组件面板的“基本”类别拖放到“下拉列表”组件的下方。
在本教程的后面部分,会将“表”绑定到 TravelWS Web 服务方法中,该方法从 Web 服务访问的数据库填充该表。
- 将一个“消息组”组件从组件面板的“基本”类别拖放到“表”组件的右侧。
“消息组”组件为用户显示运行时错误并诊断编程错误起着重要的作用。通过调用 error(String) 方法,可以使诊断消息出现在此组件中。“消息组”组件会显示 String 参数的值。此外在缺省情况下,有关运行时错误、验证错误和转换错误的消息都会出现在此组件中。
将下拉列表绑定到 Web 服务方法
接下来,将下拉列表组件绑定到 Web 服务的 getPersons 方法。在部署应用程序时,下拉列表组件会显示游客名单。
- 打开“服务器”窗口,然后展开“Web 服务”> "TravelWS"。下图显示了 TravelWS Web 服务方法。
图 5:TravelWS getpersons 方法 |
- 将
getPersons 方法从“服务器”窗口拖放到“下拉列表”组件上。
下拉列表中的值将从“项 1”更改为 "abc"。出现 "abc" 文本表明显示字段已绑定到 String 对象。
travelWSGetPersons1 将出现在“概要”窗口中,如下图所示。
图 6:显示 TravelWSGetPersons1 的“概要”窗口
|
travelWSGetPersons1 是 getPersons 方法的 TravelWS Web 服务的数据提供器。
- 右键单击“下拉列表”组件,然后选择“绑定到数据”。
将打开“绑定到数据”对话框。
- 在“绑定到数据提供器”标签中,设置以下三个值,如图 7 所示。
下拉列表:travelWSGetPersons1 (Page1) 值字段:personId 显示字段:name
图 7:“绑定到数据”对话框
|
- 单击“确定”。
测试下拉列表
- 请打开“服务器”窗口,确保捆绑的数据库服务器正在运行。
如果服务器正在运行,则“Bundled Database 服务器”节点的左侧会出现一个绿色状态图标。如果捆绑的数据库服务器没有运行,请右键单击“Bundled Database 服务器”节点,然后从弹出式菜单中选择“启动 Bundled Database”。
- 运行应用程序,并验证“下拉列表”组件是否显示了名字列表。
将表绑定到 Web 服务方法
接下来,将表组件绑定到 TravelWS Web 服务的 getTripsByPerson 方法。在部署应用程序时,该组件将显示通过数据库获取的主要-详细数据。当您从下拉列表中选择某人时,应用程序会在表中显示此人的旅行记录。
下图显示了在接下来的步骤中设计的表布局。
图 8:表组件设计 |
- 从“服务器”窗口中,拖动“Web 服务”节点下的 "TravelWS" 中的 "getTripsByPerson" 方法,并将其放在可视设计器中的“表”组件上。
TravelWS 数据提供器的值字段将作为表中的列名出现。
注意:如果打开了“选择目标”对话框,请选择 table1,然后单击“确定”。
- 右键单击“表”中的任意位置,然后从弹出式菜单中选择“表布局”。
- 在“表布局”对话框中,通过选择 tripid 和 personid 任意一项并单击 "<" 按钮,将它们从“选定”列表移动到“可用”列表中。
- 将 depDate 移动到“选定”列表的顶部,方法是选中它并单击“上移”按钮。
- 将 depDate 的页眉文本更改为
Departure Date。
请注意,可以将转换器拖放到表中的 depDate 列上,并将其设置为仅显示日期。有关详细信息,请参见使用转换器教程。
下图显示了“表布局”对话框,其中包括了到目前为止所做的更改。
图 9:“表布局”对话框 |
- 选择 depCity,并将其页眉文本更改为
Departure City。
- 选择 destCity,并将其页眉文本更改为
Destination City。
- 选择 tripType,并将其页眉文本更改为
Trip Type。
- 单击“选项”标签,并将标题更改为
Trips。
- 单击“确定”以应用更改并关闭“表布局”对话框。
从下拉列表填充表
- 在可视设计器中,双击“下拉列表”组件。
将打开 Java 编辑器,插入点位于 nameDropDown_processValueChange 方法中。
- 打开组件面板的“代码片段”标签,并滚动到“数据库和 Web 服务”节点。
下图显示了“数据库和 Web 服务”节点及其 TravelWS 代码片段,您将在下面的步骤中将该片段添加到代码中。
图 10:TravelWS 代码片段 |
- 将
TravelWS: DropDown 进程值更改从组件面板的“代码片段”拖放到 nameDropDown_processValueChange 方法中。
此代码片段将从下拉列表中获取所选人员的 ID,然后将该 ID 设置为表的数据提供器。
- 将
TravelWS: 获取第一个用户 ID 代码片段从组件面板的“代码片段”拖放到 Java 编辑器中,使其紧跟在最后一个结束括号之前。请注意,包含 Rowkey 类的语句包含了一个语法错误,原因是文件尚未包含该类的 import 语句。因此将在下一步添加 import 语句。
获取第一个用户 ID 代码会从 travelWSGetPerson1 数据提供器中获取第一个人的 ID。
- 在 Java 编辑器中的任意位置单击鼠标右键,然后选择“修复导入”。
“修复导入”命令将自动添加您的代码所需的 import 语句,并删除未使用的 import 语句。但是“修复导入”命令不删除您的代码中可能包含的任何全限定类名称。
- 向上滚动到
init 方法,然后将 TravelWS: 选择第一个用户代码片段从组件面板的“代码片段”拖放到注释 Creator-managed Component Initialization 之后。按 Ctrl-Shift-F 组合键以便自动重新设置代码的格式。结果类似于以下代码样例。选择第一个用户的代码以粗体显示。
代码样例 1:包含选择第一个用户代码的 init 方法 |
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
Creator-managed Component Initialization/
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
// Initialize the drop down to initialize the first person
// and the data provider to get the trips for the first person
Integer firstPerson = getFirstPersonId();
nameDropDown.setSelected( firstPerson );
travelWSGetTripsByPerson1.setPersonID( firstPerson );
} |
此代码片段使用 travelWSGetPersons1 数据提供器中的第一个名字初始化下拉列表。该代码还从 travelWSGetTripsByPerson1 数据提供器中检索第一个人的行程。当选择其他用户时,Trips 表的内容也会随之改变。
运行项目
- 运行项目。
- 从下拉列表中选择一个名字,您会注意到数据表被更新。下图显示了 Richard Kent 的旅行路线。
图 11:最终的 Web 应用程序 |
另请参见:
更多的开发者资源:
此页的最新修改时间:2006 年 1 月 25 日
|