wsimport

本文介绍了如何使用wsimport工具生成JAX-WS端点接口、异常类、异步响应组件及Java类型,以及如何通过命令行或Ant任务进行配置与操作。

Last Modified: 12/14/05

wsimport

The wsimport tool generates JAX-WS portable artifacts, such as: 

  • Service Endpoint Interface (SEI)
  • Service
  • Exception class mapped from wsdl:fault (if any)
  • Async Reponse Bean derived from response wsdl:message (if any)
  • JAXB generated value types (mapped java classes from schema types)

These artifacts can be packaged in a WAR file with the WSDL and schema documents along with the endpoint implementation to be deployed.

wsimport tool can be launched using the command line script wsimport.sh (Unix) or wsimport.bat(windows). There is also and ant task to import and compile the wsdl, see the details below.

Command-line

Syntax

wsimport [options] <wsdl>

The following table lists the wsimport options.

Table 1-1 wsimport Options

Option

Description

-d <directory>

Specify where to place generated output files

-b <path>

Specify external JAX-WS or JAXB binding files (Each <file> must have its own -b)

-catalog
Specify catalog file to resolve external entity references, it supports TR9401, XCatalog, and OASIS XML Catalog format. Please read the XML Entity and URI Resolvers document or see wsimport_catalog sample.

-extension

allow vendor extensions (functionality not specified by the specification). Use of extensions may result in applications that are not portable or may not interoperate with other implementations

-help

Display help

-httpproxy:<host>:<port>

Specify an HTTP proxy server (port defaults to 8080)

-keep

Keep generated files

-p Specifying a target package via this command-line option, overrides any wsdl and schema binding customization for package name and the default package name algorithm defined in the specification

-s <directory>

Specify where to place generated source files

-verbose

Output messages about what the compiler is doing

-version

Print version information

-wsdllocation <location>
@WebService.wsdlLocation and @WebServiceClient.wsdlLocation value

Multiple JAX-WS and JAXB binding files can be specified using -b option and they can be used to customize various things like package names, bean names, etc. More information on JAX-WS and JAXB binding files can be found in the customization documentation.

Ant task

An Ant task for the wsimport tool is provided along with the tool. The attributes and elements supported by the Ant task are listed below: 

   <wsimport           
wsdl="..."
destdir="directory for generated class files"
sourcedestdir="directory for generated source files"
keep="true|false"
extension="true|false"
verbose="true|false"
version="true|false"
wsdlLocation="..."
catalog="catalog file"
package="package name"
<binding dir="..." includes="..." />
</wsimport>



Attribute

Description

Command line

wsdl

WSDL file

WSDL

destdir

Specify where to place output generated classes

-d

sourcedestdir

Specify where to place generated source files, keep is turned on with this option

-s

keep

Keep generated files, tunred on with sourcedestdir option

-keep

verbose

Output messages about what the compiler is doing

-verbose

binding

Specify external JAX-WS or JAXB binding files

-b

extension

allow vendor extentions (funcionality not specified by the specification). Use of extensions may result in applications that are not portable or may not interoperate with other implementations

-extension

wsdllocation
The wsdl URI passed thru this option will be used to set the value of @WebService.wsdlLocationand @WebServiceClient.wsdlLocation annotation elements on the generated SEI and Service interface
-wsdllocation
catalog
Specify catalog file to resolve external entity references, it supports TR9401, XCatalog, and OASIS XML Catalog format. Additionally, ant xmlcatalog type can be used to resolve entities, see wsimport_catalog sample.
-catalog
package
Specifies the target package -p

The binding attributes is like a path-like structure and can also be set via nested <binding> elements, respectively. Before this task can be used, a <taskdef> element needs to be added to the project as given below:

  <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath path="jaxws.classpath"/>
</taskdef>

where jaxws.classpath is a reference to a path-like structure, defined elsewhere in the build environment, and contains the list of classes required by the JAX-WS tools.

Examples

  <wsimport
destdir="${build.classes.home}"
debug="true"
wsdl="AddNumbers.wsdl"
binding="custom.xml"/>


The above example generates client-side artifacts for AddNumbers.wsdl, stores .class files in the ${build.classes.home} directory using the custom.xml customization file. The classpath used is xyz.jar and compiles with debug information on.

  <wsimport
keep="true"
sourcedestdir="${source.dir}"
destdir="${build.classes.home}"
wsdl="AddNumbers.wsdl">
<binding dir="${basedir}/etc" includes="custom.xml"/>
</wsimport>


The above example generates portable artifacts for AddNumbers.wsdl, stores .java files in the ${source.dir} directory, stores .class files in the ${build.classes.home}directory. 

Summary of Changed and Removed wsimport ant attributes

base replaced by  destdir

sourceBase is replaced by  sourcedestdir

wsdlFile is replaced by  wsdl

httpProxy 
is removed. Use ant's setproxy task instead for proxy configuration.

version is removed
WebService是一种跨编程语言和跨操作系统平台的远程调用技术,它允许不同的应用程序通过网络进行通信和交互。wsimport是JDK提供的一个工具,用于根据WSDL(Web Services Description Language)文件生成客户端代码,从而方便地调用WebService。 ### 使用方法 - **wsimport命令使用**:在本地找到项目建包的根目录,进入该目录后打开命令行窗口,输入`wsimport -s . 服务地址`(中间有个点),执行完成后,会在该目录生成相关文件。例如在maven项目中,找到java目录,在该目录下执行此命令 [^5]。 - **客户端代码测试**:生成代码后,可编写客户端代码进行测试。如新建客户端代码,导入相关服务类,获取服务实例并调用服务方法。示例代码如下 [^4]: ```java package cn.edu.ccut.client; import cn.edu.ccut.service.impl.TestService; import cn.edu.ccut.service.impl.TestServiceImplService; public class TestClient { public static void main(String[] args) { TestServiceImplService testServiceImplService = new TestServiceImplService(); TestService service = testServiceImplService.getTestServiceImplPort(); System.out.println(service.add(1, 2)); } } ``` ### 应用场景 - **不同系统间的数据交互**:当企业内部存在多个不同技术栈开发的系统,需要进行数据共享和交互时,可通过WebService暴露接口,其他系统使用wsimport生成客户端代码进行调用。 - **跨平台通信**:在不同操作系统和编程语言的环境下,WebService可以实现跨平台的通信,wsimport则帮助客户端快速接入服务。 ### 两者关系 wsimport是为了更好地调用WebService而存在的工具。WebService发布后,会提供对应的WSDL文件来描述服务的接口信息,wsimport工具可以解析这个WSDL文件,生成客户端可以直接使用的Java代码,简化了客户端调用WebService的开发过程。 ### WSDL解析 点开webservice网站上的相关服务的wsdl链接(如http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl ),可以查看wsdl对服务器的描述。Wsdl文档从下往上读,包含以下重要元素 [^3]: - **wsdl:service**:所有请求服务的站点集合。 - **wsdl:port**:定义为webservice单个服务访问点。 - **binding**:特定服务访问点与具体服务类的绑定。 - **PortType**:对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持(服务类)。 - **Operation**:对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对(方法)。 - **Types**:数据类型定义的容器,它使用某种类型系统需要的输入参数和输出参数的数据类型。 - **Message**:通信消息的数据结构的抽象类型化定义,使用Types所定义的类型来定义整个消息的数据结构(输入参和输出参)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值