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

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

[z/OS]这WSDL2Java命令行工具不受支持z/OS®平台。 此功能由随附的组装工具提供WebSphere® Application Server运行于z/OS平台。

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

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

命令行语法

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

必需自变量

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

重要参数

-角色Java EE角色
指定Java EE开发角色,用于标识要生成哪些文件。 有效参数包含:
客户机
develop-client 和 deploy-client 参数的组合。
deploy-client
生成用于客户机部署的绑定文件。
deploy-server
生成用于服务器部署的绑定文件。
develop-client(缺省值)
生成用于客户机开发的文件。
develop-server
生成用于服务器开发的文件。
服务器
develop-server 和 deploy-server 参数的组合。
-容器Java EE -容器
表示Java EE容器使用。 有效参数包含:
客户机
指示客户机容器。
ejb
表示企业JavaBeans (EJB)容器。
指示没有容器。
web
指示 Web 容器。
对于客户机角色(请参阅 -role 选项),缺省参数为 none。 对于服务器角色,那么容器必须是 ejbweb。 开发和部署必须使用同一个容器选项。
-输出目录
设置发出的文件的根目录。
-inputMappingFile mapping file
指定 Web 服务的文件名Java EE映射文件。
-introspect
将现有的 Java bean 与新的 Web 服务 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 兼容的类。
-类路径路径
定义用于搜索 Java 类的备用类路径。
-noDataBinding
禁用 XML 类型与 Java 类型的绑定。 相反,每个 XML 类型都映射到javax.xml.soap.SOAPElement由带有 Java 附件 API 的 SOAP (SAAJ) 规范定义的接口。

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,查看有关用于 Java 接口的带附件 SOAP API 以及用于 JAX-RPC 应用程序的自定义数据绑定的信息。

-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 参数。

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

其他参数

-用户ID
指定访问 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 只是一个框架,用来写可重复的测试。