blob: 634dce5f3fb44cf8f8b84dd31ff8e5d8a3541d81 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Advanced Web Service Interoperability(高级 Web 服务互操作性)
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Advanced Web Service Interoperability(高级 Web 服务互操作性) - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Advanced Web Service Interoperability(高级 Web 服务互操作性)
高级 Web 服务互操作性 (WSIT),亦称 Web 服务的“服务质量”,包含可以实现 Java Web 服务和 .Net Web 服务间的互操作性的组件。本文档说明了 IDE 中对配置使用 WSIT Web 服务和客户端的某种支持。有关使用 WSIT 的更多信息,请参见 link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+WSIT 教程+]中的link:http://docs.oracle.com/cd/E19159-01/820-1072/ahibn/index.html[+第 3 章的 WSIT 示例:使用 Web 容器和 NetBeans IDE+]
image::images/netbeans-stamp-74-73-72.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3 和 7.4"]
*要学习本教程,您需要具备以下软件和资源。*
|===
|软件或资源 |要求的版本
|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |Java EE 下载包
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 6 或版本 7
|符合 Java EE 规范的 Web 服务器或应用服务器 |GlassFish Server Open Source Edition 3.1.x4.x
link:http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[+Oracle WebLogic Server+] 11g 或 12c
|===
可以选择随同 NetBeans IDE Java EE 发行版本一起安装 GlassFish Server。此外,也可以访问 link:https://glassfish.java.net/download.html[+GlassFish Server 下载页+]或 link:http://tomcat.apache.org/download-60.cgi[+Apache Tomcat 下载页+]。
*重要说明:*Java EE 项目需要使用 GlassFish Server 3.1.x4.x Oracle WebLogic Server 12c
== 简介
与高级 Web 服务互操作性相关的组件分为四个主要类别:
* *引导和配置*。创建可访问和使用 Web 服务的 Web 服务客户端时执行的过程。
* *消息安全性*。支持以下安全配置选项:
* 签名及加密目标选项
* 客户端/服务 Web 服务安全性
* 客户端/服务信任选项
* 高级配置选项
* 密钥库配置选项
* *消息优化*。确保以最有效的方式在 Internet 上传输 Web 服务消息。消息优化是在 Web 服务通信中实现的,实现方式为:在传输之前对消息进行编码,然后在消息到达最终目标时对其进行解码。
* *可靠的消息传送*。衡量系统将消息从 A 位置无错误地传输到 B 位置的能力。
“服务质量”是在 Web 服务属性编辑器中配置的,该编辑器可在 "Projects"(项目)窗口中通过代表 Web 服务或客户端的节点进行访问。在本文档中,将向您介绍两个随 IDE 一起分发的样例:不安全的 Web 服务样例和安全的 Web 服务样例。本文档将演示两个样例之间的一些差异,以及如何使用 IDE 为您自己的 Web 服务和客户端配置安全性。
有关“服务质量”主题的完整指南,请参见 link:http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/reference/tutorials/wsit/doc/index.html[+WSIT 教程+]。
== 了解计算器样例
本练习的目标是了解与 IDE 捆绑在一起的计算器样例。与下一个样例相比,此样例是非安全的,因为检查 Web 服务时将会显示该样例。
=== 浏览样例
在本练习中,将使用 "New Project"(新建项目)向导创建样例,在 IDE 中检查样例并部署应用程序。
1. 选择 "File"(文件)> "New Project"(新建项目)(在 Linux Windows 上为 Ctrl-Shift-N 组合键;在 MacOS 上为 ⌘-Shift-N 组合键)以打开 "New Project"(新建项目)向导。
2. 展开 "Samples"(样例)类别,选择 "Web Services"Web 服务)节点,然后选择 "Calculator"(计算器)样例。单击 "Next"(下一步)。
image::images/wsit-newproject.png[title="显示计算器样例的新建项目向导"]
[start=3]
. 确认在 "Server"(服务器)下拉列表中选定 Java EE 兼容的服务器。单击 "Finish"(完成)。
单击 "Finish"(完成)后,向导将创建以下两个项目:
* *CalculatorApp*,提供名为 CalculatorWS Web 服务,用于公开名为 "add" 的操作。
* *CalculatorClientApp*,提供名为 CalculatorWSService 的客户端,用于调用 Web 服务的 "add" 操作。
可能会用一个错误图标标记 CalculatorClientApp 服务,因为 IDE 找不到 CalculatorWS 服务的 WSDL。部署 CalculatorApp,然后清理并构建 CalculatorClientApp 之后,该错误将得到解决。
image::images/wsit-projects.png[title="显示 Web 服务和客户端的 "Projects"(项目)窗口"]
[start=4]
. 双击 CalculatorWS Web 服务以在编辑器中打开此文件,然后单击编辑器顶部的 "Design"(设计)标签以在可视设计器中查看 Web 服务。
image::images/wsit-design.png[title=""Design GUI"(设计 GUI)(可视设计器)标签中的 CalculatorWS 服务"]
*注:*在服务设计标签的 "Quality of Service"(服务质量)部分中,您可以看到__启用任何选项。因此,尚未将“服务质量”组件应用于此特定 Web 服务。您将看到创建安全 Web 服务时_启用_“服务质量”组件的 Web 服务。
有关 IDE Web 服务的完整教程,请参见 link:jax-ws.html[+JAX-WS Web 服务入门指南+]。
=== 部署和测试计算器样例
1. 右键单击 "CalculatorApp" 项目并选择 "Run"(运行)。
服务器启动,并且 Web 服务部署到服务器中。您将会看到在默认浏览器中打开一个页面,其中提供服务的某些详细信息。
image::images/wsit-browser1.png[title="浏览器中的 CalculatorWS 信息窗口"]
[start=2]
. 单击浏览器中此页上的 WSDL 链接以查看定义 Web 服务的 WSDL 文件。
image::images/wsit-browser2.png[title="浏览器中的计算器 WS WSDL"]
*注:*如果未显示 WSDL,请检查浏览器地址栏中的 URL。它应指向 ``http://localhost:_your_port_number_/CalculatorApp/CalculatorWSService?WSDL`` 。
[start=3]
. IDE "Projects"(项目)窗口中,右键单击 "Web Services"Web 服务)节点下的 "CalculatorWS",然后在弹出菜单中选择 "Test Web Service"(测试 Web 服务)。
测试 Web 服务时,将在浏览器中打开用于测试该服务的页面。
image::images/wsit-browser3.png[title="浏览器中的计算器 WS 测试器"]
IDE 可以提供用于测试 Web 服务的客户端并在浏览器中打开测试应用程序。您可以在测试应用程序中为 Web 服务中定义的每个字段输入值。测试应用程序具有一个按钮,该按钮标记在服务中操作的名称之后。单击此按钮时,您将会看到调用操作的结果。
[start=4]
. "Projects"(项目)窗口中检查 CalculatorClientApp 项目是否有任何错误标记。
如果 ``ClientServlet.java`` 有错误图标,请右键单击该项目节点,然后在弹出菜单中选择 "Clean and Build"(清理并构建)。显示错误的原因是未部署 CalculatorWS 服务。既然部署了该服务,IDE 就可以解析 WSDL 并编译 ClientServlet 了。
[start=5]
. 右键单击 "CalculatorClientApp" 项目节点,然后选择 "Run"(运行)。
运行应用程序时,将在浏览器中打开服务界面。
image::images/wsit-browser4.png[title="浏览器中的计算器服务客户端"]
[start=6]
. 在这两个字段中输入值,然后单击 "Get Result"(获取结果)。
单击 "Get Result"(获取结果)时,将从 Web 服务中检索操作结果并将其显示在客户端中。
Web 服务正常运行并且客户端检索结果,但此项目不使用“服务质量”组件。在下一部分,您将了解如何配置 "Quality of Service"(服务质量)组件。
== 了解安全计算器样例
本练习的目标是了解安全的 Web 服务的设置方式,以及客户端与该服务的交互方式。
=== 浏览样例
在本练习中,将使用 "New Project"(新建项目)向导创建样例,然后检查如何为应用程序配置 "Quality of Service"(服务质量)。
1. 选择 "File"(文件)> "New Project"(新建项目)(在 Linux Windows 上为 Ctrl-Shift-N 组合键;在 MacOS 上为 ⌘-Shift-N 组合键)以打开 "New Project"(新建项目)向导。
2. 展开 "Samples"(样例)类别,选择 "Web Services"Web 服务)节点,然后选择 "Secure Calculator"(安全计算器)样例。单击 "Next"(下一步)。
3. 确认在 "Server"(服务器)下拉列表中选定 Java EE 兼容的服务器。单击 "Finish"(完成)。
单击 "Finish"(完成)后,向导将创建以下两个项目:
* *SecureCalculatorApp*,提供名为 CalculatorWS Web 服务,用于公开名为 "add" 的操作。
* *SecureCalculatorClientApp*,提供名为 CalculatorWSService 的客户端,用于调用 Web 服务的 "add" 操作。
可能会用一个错误图标标记 SecureCalculatorClientApp 服务,因为 IDE 找不到 CalculatorWS 服务的 WSDL。部署 SecureCalculatorApp,然后清理并构建 SecureCalculatorClientApp 之后,该错误将得到解决。
[start=4]
. 双击 SecureCalculatorApp "Web Services"Web 服务)文件夹中的 CalculatorWS Web 服务以在编辑器中打开此文件,然后单击编辑器顶部的 "Design"(设计)标签以在可视设计器中查看 Web 服务。
*注:*在服务设计视图的 "Quality of Service"(服务质量)部分中,您可以看到选中了 "Secure Service"(安全服务)选项,而其他两个选项未选中。设计视图中的 "Quality of Service"(服务质量)部分用于指定当前的 Web 服务所_启用_的服务质量组件。
[start=5]
. 单击 "Edit Web Service Attributes"(编辑 Web 服务属性)以打开 "Web Service Attributes Editor"Web 服务属性编辑器)。
image::images/wsit-quality-dialog.png[title="WS 属性编辑器中的 "Quality of Service"(服务质量)页"]
"Quality of Service"(服务质量)标签中,您可以看到选中了 "Version Compatibility"(版本兼容性)选项。应选择与已安装的 Metro .NET 版本匹配的最新版本。
要启用版本兼容性下拉列表,请将最新版本的 Metro 添加到项目的类路径中。要添加最新的 Metro 库,请在 "Projects"(项目)窗口中右键单击项目的节点,打开项目的 "Properties"(属性)对话框,转至 "Libraries"(库)类别,然后浏览并添加最新的 Metro 库。
请注意,选中了 "Secure Service"(安全服务)选项,并在下拉列表中选择了安全机制。该安全机制指定用于保护 Web 服务的方法。
在此样例应用程序中,选中了 "Username Authentication with Symmetric Keys"(用户名验证以及对称密钥)安全机制。有关用户名验证以及对称密钥安全机制的选项和属性的描述,请参见link:http://docs.oracle.com/cd/E19182-01/821-0015/gggsrv/index.html[+用户名验证以及对称密钥+]。有关其他可用安全机制的描述,请参见link:http://docs.oracle.com/cd/E19182-01/820-0595/6ncatc2q5/index.html[+配置安全机制+]。
[start=6]
. "Quality of Service"(服务质量)标签中,展开 "Input Message"(输入消息)和 "Output Message"(输出消息)部分。
image::images/wsit-quality-dialog2.png[title="已启用 "Message Parts"(消息部件)按钮的 "Quality of Service"(服务质量)页"]
如果选择 "Username Authentication with Symmetric Keys"(用户名验证以及对称密钥)作为安全机制,则会为 "Input Message"(输入消息)和 "Output Message"(输出消息)启用 "Message Parts"(消息部件)按钮。
*注:*不为 "Username Authentication with Symmetric Keys"(用户名验证以及对称密钥)安全机制启用 "Authentication Token"(验证标记)下拉列表和 "Input Message"(输入消息)的选项。
[start=7]
. 单击 "Input Message"(输入消息)部分中的 "Message Parts"(消息部件)按钮。
image::images/wsit-messageparts.png[title=""Message Parts"(消息部件)对话框"]
"Message Parts"(消息部件)对话框中,可以查看不同元素的安全选项。可以选中相应复选框以启用或禁用应签名、加密和需要的部件。对于每个元素,可以指定以下选项:
* 选择 *Sign*(签名)以指定需要完整性保护(数字签名)的消息的部件或元素。
* 选择 *Encrypt*(加密)以指定需要机密性(加密)的消息的部件或元素。
* 选择 *Require*(需要)以指定消息中必须包含的部件和/或元素集合。
接下来,您将了解 Web 服务客户端的服务质量是如何配置的。
[start=8]
. "Projects"(项目)窗口中,展开 *SecureCalculatorClientApp* 项目中的 "Web Service References"Web 服务引用)节点。
[start=9]
. 右键单击 "CalculatorWSService" 节点,然后在弹出菜单中选择 "Edit Web Service Attributes"(编辑 Web 服务属性)以打开 "Web Service Attributes"Web 服务属性)对话框。
image::images/wsit-qos-wsservice.png[title="Web 服务客户端服务质量对话框"]
您会看到存在默认用户 "wsitUser" 和口令。该默认用户和口令是在 "file"(文件)领域中创建的。
如果在 "Security"(安全)部分中选择 "Use Development Defaults"(使用默认开发设置)选项,则 IDE 会将证书导入 GlassFish Server 密钥库和信任库中,然后即可供用户进行开发。
*重要说明:*在生产环境中,您可能希望提供自己的证书和用户设置,但在开发环境中,您会发现这些默认设置非常有用。
有关如何为 Web 服务客户端配置安全性的更详细描述,请参见 link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+WSIT 教程+]中的link:http://docs.oracle.com/cd/E19159-01/820-1072/6ncp48v3b/index.html[+第 7 章:使用 WSIT 安全性+]。
=== 部署和测试安全计算器样例
1. 右键单击 Web 服务项目节点,然后选择 "Run"(运行)以部署 Web 服务。
2. 右键单击 Web 服务客户端项目节点,然后选择 "Run"(运行)。
运行客户端时,将部署应用程序,并在浏览器中打开服务界面。
image::images/wsit-browser-secure1.png[title="浏览器中的安全 Web 服务客户端"]
[start=3]
. 在每个字段中键入一个数字,然后单击 "Get Result"(获取结果)。
单击 "Get Result"(获取结果)时,页面中将显示已验证客户端的消息并显示操作结果。
image::images/wsit-browser-secure2.png[title="显示结果的浏览器中的安全 Web 服务客户端"]
如果您获得的错误消息说验证因用户名/口令对无效而失败,则表示 IDE 创建的默认用户存在问题,或者客户端上设置的凭证不匹配。在这种情况下,需要手动创建用户名/口令对。有关说明,请参见 link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+WSIT 教程+]中的link:http://docs.oracle.com/cd/E19159-01/820-1072/6ncp48v3b/index.html[+第 7 章:使用 WSIT 安全性+]。
link:/about/contact_form.html?to=3&subject=Feedback:WSIT%20Advanced%20Interoperability%20in%20NetBeans%20IDE%206.0[+发送有关此教程的反馈意见+]
== 另请参见
有关使用 NetBeans IDE 开发 Web 服务的详细信息,请参见以下资源:
* link:client.html[+开发 JAX-WS Web 服务客户端+]
* link:jax-ws.html[+JAX-WS Web 服务入门指南+]
* link:rest.html[+REST 风格的 Web 服务入门指南+]
* link:flower_overview.html[+传递二进制数据的 Web 服务应用程序+]
* link:../../74/websvc/jaxb_zh_CN.html[+使用 JAXB WSDL 绑定到 Java+]
* link:../../trails/web.html[+Web 服务学习资源+]
要发送意见和建议、获得支持以及随时了解 NetBeans IDE Java EE 开发功能的最新开发情况,请link:../../../community/lists/top.html[+加入 nbj2ee@netbeans.org 邮件列表+]。