使用Axis2 wsdl2java命令生成webservice客户端

时间:2023-01-07 10:01:13

Axis2生成客户端代码的方式列下:

1 环境:jdk1.5,axis2 1.4.1。

2.访问为你提供服务的端口,确认端口正常。

3.配置系统环境:

AXIS_HOME    D:\tools\axis2-1.4.1;

AXIS_LIB    %AXIS_HOME%\lib;

path    %AXIS_HOME%\bin;

4. 在cmd下运行:

D:\tools\axis2-1.4.1\bin> wsdl2java.bat -uri http://localhost:8080/axis2/services/HelloUser?wsdl -o D:\workspace\WSjava

D:\workspace\WSjava

Using AXIS2_HOME:   D:\tools\axis2-1.4.1

Using JAVA_HOME:    D:\tools\jdk1.6.0_04

Retrieving document at 'http://localhost:8080/axis2/services/HelloUser?wsdl'.

D:\tools\axis2-1.4.1\bin>

出现上述表示正常结束,代码生成。

5.最后自己做一个测试的类,引用以上2类可完成webservice调用。测试也行。

http://localhost:8080/axis2/services/HelloUser?wsdl 是服务提供的wsdl URI。

D:\workspace\WSjava 是你程序输出的路径。


命令行格式为:WSDL2Java [options] -uri <url or path> : A url or path to a WSDL 

其中常用的options具体如下:
-o <path> : 指定生成代码的输出路径
-a : 生成异步模式的代码
-s : 生成同步模式的代码
-p <pkg> : 指定代码的package名称
-l <languange> : 使用的语言(Java/C) 默认是java
-t : 为代码生成测试用例
-ss : 生成服务端代码 默认不生成
-sd : 生成服务描述文件 services.xml,仅与-ss一同使用
-d <databinding> : 指定databingding,例如,adb、xmlbean、jibx、jaxme、 jaxbri和none(无数据绑定),默认为adb
-g : 生成服务端和客户端的代码
-pn <port_name> : 当WSDL中有多个port时,指定其中一个port
-sn <serv_name> : 选择WSDL中的一个service
-u : 展开data-binding的类
-r <path> : 为代码生成指定一个repository
-ssi : 为服务端实现代码生成接口类
-S : 为生成的源码指定存储路径
-R : 为生成的resources指定存储路径
–noBuildXML : 输出中不生成build.xml文件
–noWSDL : 在resources目录中不生成WSDL文件
–noMessageReceiver : 不生成MessageReceiver类


可能出现的错误


关于大体上的步骤:安装JDk,安装Tomcat,下载AXIS2等等,很多文章都有介绍,这里就不赘述了,随便到网上找都可以,这里主要记录一下遇到的JAVA_HOME设置问题。


问题出现在cd到axis2的bin目录下,执行wsdl2java时,出现:


The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK/JRE


这样的报错,可是执行java -version可以正确显示版本信息:


java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)


这说明JAVA_HOME是设置了的,到【我的电脑】【属性】【高级】【环境变量】中也是可以看到设置的 C:\Program Files\Java\jdk1.6.0_11\bin;


问题出现在哪里呢?只能打开wsdl2java.bat查看是哪里报的错:


rem Make sure prerequisite environment variables are set
if not "%JAVA_HOME%" == "" goto gotJavaHome
echo The JAVA_HOME environment variable is not defined
echo This environment variable is needed to run this program
goto end
:gotJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
goto okJavaHome
:noJavaHome

echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
echo NB: JAVA_HOME should point to a JDK/JRE
goto end
:okJavaHome


看到红色字体部分,你可能就明白了,问题出现在JAVA_HOME的设置不能到bin下,而是应该到C:\Program Files\Java\jdk1.6.0_11,为了不改变原来的设置,你可以在cmd窗口中重新设置:


set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11


这样,执行wsdl2java就可以看到提示了!