用于 JAX-RPC 应用程序的 WSDL2Java 命令

针对 WSDL 文件运行 WSDL2Java 命令行工具以创建 Java™ API 和部署描述符模板。

Web 服务描述语言 (WSDL) 文件描述 Web Service。 Java API for XML-based Remote Procedure Call (JAX-RPC) 1.1 规范定义与 Web Service 交互的 Java API 映射。 Web Services for Java Platform, Enterprise Edition (Java EE) 规范定义用于在 Java EE 环境中部署 Web Service 的部署描述符。 WSDL2Java 命令针对 WSDL 文件运行,以根据这些规范创建 Java API 和部署描述符模板。

最佳实践: 在 WSDL 或模式中使用绝对名称空间是最佳实践。 缺省情况下,WSDL2Java 工具不允许使用相对名称空间。 XML Plenary Interest Group 不推荐使用相对名称空间,按照“规范 XML V1.0”规范的要求,使用相对名称空间会导致 XML 数字签名失败。 然而,如果已建立的 WSDL 或模式依赖于相对名称空间,那么在特定条件下,您可以使用 allowRelativeNamespace 属性来禁用 WSDL2Java 工具中的相对名称空间限制。 有关其他信息,请参阅属性描述。
可以将任何相对名称空间转换为绝对名称空间。 以下是相对名称空间的示例:
targetNamespace="MyRelNamespace"
。您可以通过添加协议和基本 URI 信息,将此示例中的相对名称空间更改为绝对名称空间:
targetNamespace="http://www.sample.com/MyRelNamespace"

命令行语法

命令行语法为:
WSDL2Java [arguments] WSDL-URI

必需自变量

WSDL-URI
使用统一资源标识 (URI) 指定输入 WSDL 文件的位置。 如果 WSDL 文件在本地文件系统上,您也可以使用常规文件路径。

重要参数

-role Java EE 角色
指定用于标识要生成哪些文件的 Java EE 开发角色。 有效参数包含:
客户机
develop-client 和 deploy-client 参数的组合。
deploy-client
生成用于客户机部署的绑定文件。
deploy-server
生成用于服务器部署的绑定文件。
develop-client(缺省值)
生成用于客户机开发的文件。
develop-server
生成用于服务器开发的文件。
服务器
develop-server 和 deploy-server 参数的组合。
-container Java EE-container
指示要使用的 Java EE 容器。 有效参数包含:
客户机
指示客户机容器。
ejb
指示 Enterprise JavaBeans (EJB) 容器。
指示没有容器。
web
指示 Web 容器。
对于客户机角色(请参阅 -role 选项),缺省参数为 none。 对于服务器角色,那么容器必须是 ejbweb。 开发和部署必须使用同一个容器选项。
-output 目录
设置发出的文件的根目录。
-inputMappingFile mapping file
指定 Web Services for Java EE 映射文件的文件名。
-introspect
将现有 Java Bean 与新的 Web Service API 配合使用。

在某些场景中,最好使用现有 Java 类,而不是生成新类。 -introspect 选项指示 WSDL2Java 命令在生成类时检查现有 Java 类。 按照 JAX-RPC 规范验证现有的类。 例如:

假设您有一个现有的 Java Bean
public class Bean {
	public Date x;
}
WSDL 文件将 x 定义为 xsd:dateTime。 如果没有 -introspect 选项,那么 WSDL2Java 命令将生成类似于以下示例的 Java Bean:
public class Bean {
	private Calendar x;
	public void setx(Calendar value) (x=value;)
	public Calendar getX() { return x;)
}
WSDL2Java 命令使用 -introspect 选项来检查原始 Java Bean 并生成与现有 Java Bean 兼容的类。
-classpath path
定义用于搜索 Java 类的备用类路径。
-noDataBinding
禁用 XML 类型与 Java 类型的绑定。 而是将每个 XML 类型映射到由 SOAP with Attachments API for Java (SAAJ) 规范定义的 javax.xml.soap.SOAPElement 接口。

Java API for XML Web Services (JAX-WS) 编程模型支持 SAAJ 1.2 和 1.3。

JAX-RPC 编程模型支持 SAAJ 1.2。

Java 编程模型定义 XML 类型子集的 Java 映射。 无法将多种 XML 类型映射到 Java Bean 或原语。 在这种情况下,WSDL2Java 命令将类型映射到 SAAJ SOAPElement。 SAAJ SOAPElement 是消息中元素的一般表示。 SOAPElement 上的方法可以用于检查元素及其子元素。

在某些方案中,仅使用通用 SOAPElement 映射可能更合适。 要了解有关使用 SOAPElement的更多信息,请参阅有关 JAX-RPC 应用程序的 SOAP with Attachments API for Java 接口和定制数据绑定程序的信息。

-help
显示帮助消息并退出。
-helpX
显示扩展选项的帮助消息。 这些选项包括:
-verbose
显示处理信息,包含生成的文件的名称。
-NStoPkgnamespace=package
缺省情况下,自动从 WSDL 文件的名称空间字符串中派生包名称。 例如,如果名称空间的格式是 http://x.y.comurn:x.y.com,相应的包是 com.y.x

您可以通过使用 -NStoPkg 参数提供您自己的映射,只要需要,您就可以重复使用它,每次使用一个唯一的名称空间映射。 例如,在 WSDL 文件中有名为 urn:AddressFetcher2 的名称空间,并且需要从此名称空间中对象生成的文件在包 samples.addr 中,那么在 WSDL2Java 命令中提供 -NStoPkg "http://urn:AddressFetcher2/"=samples.addr 参数。

-timeout
指定 WSDL2Java 命令在放弃之前等待 WSDL-URI 响应的时间长度 (以秒计)。 缺省为 45 秒,-1 禁用超时。
-genResolver
生成绝对导入解析器类。 该类是用来记录 WSDL URI 使用的导入的 WSDL 文件的内容。 运行时将使用该类,以后 WSDL2Java 命令运行的时候也能使用它。 当导入的 WSDL 文件是远程文件或者不可访问时,需要这种灵活性。 如果使用了导入解析器,那么在运行时远程 WSDL 文件不可能像在开发期间一样具有不同内容。 生成的类名称为 _AbsoluteImportResolver.java。 使用 WSDL2Java 命令生成的其他 Java 类来编译和打包此类。
-useResolver 解析器类
指定在语法分析期间使用的绝对导入解析器类。 必须在使用 -genResolver 选项的前一次 WSDL2Java 命令运行期间创建了此类。 此类在 CLASSPATH 变量中必须存在。
-deployScope 争论
指示如何部署服务器实现。 有效参数包含:
应用程序
对于所有请求使用实现类的一个实例。
请求
为每个请求创建实现类的一个新的实例。
会话
为每个会话创建实现类的一个新的实例。

其他参数

-user 标识
指定访问 WSDL URI 的登录用户名。
-password password
指定访问 WSDL URI 的登录用户密码。
-all
为所有类型生成 Java 文件,即使未引用的类型也是如此。
-allowRelativeNamespace true 或 false
指定是否禁用相对名称空间限制。 如果指定 -allowRelativeNamespace=true,那么会禁用相对名称空间限制。
避免麻烦: 仅当您具有依赖于相对名称空间的已建立 WSDL 文件或模式,并且正在寻求与一组允许使用相对名称空间的已定义供应商进行互操作时,才使用此属性。
-debug
打印调试信息。
打印调试信息参数
生成 Java 文件。 有效参数包含:
  • IfNotExists,缺省值
  • Overwrite
-javaSearch
-javaSearch 选项与 -genJava 选项配合使用。 如果使用 -genJava IfNotExists,那么使用 -javaSearch 选项来确定如何检测文件存在。
  • File(缺省值):在输出目录中查找文件
  • Classpath:在 CLASSPATH 变量中查找类
  • Both:在输出目录中查找文件或在 CLASSPATH 变量中查找类
-genXML 争论
生成 .xml.xmi 文件。 有效自变量为:
  • IfNotExists,缺省值
  • Overwrite
-genImplSer true 或 false
指示每个生成的 Java Bean 实现 java.io.Serializable。 缺省值为 false
-genEquals true 或 false
指示每个生成的 Java Bean 都具有 equalshashCode 方法。 缺省值为 false。
-noWrappedOperations
禁用合并的操作检测。 将生成请求和响应消息的 Java Bean。
-noWrappedArrays
禁用合并的数组检测。
-fileNStoPkg 文件名
指定打包映射名称空间的文件。 缺省值为 NStoPKG.properties。
- 服务 wsdl 服务名称
仅为已安装的 WSDL 服务生成文件。
-testCase
生成 JUnit 测试用例模板用于测试 Web Service。 JUnit 只是一个框架,用来写可重复的测试。