set AXIS_LIB=G:\workspace\AXIS_HOME\lib
set Java_CMD=java -Djava.ext.dirs=%AXIS_LIB%
%Java_CMD% org.apache.axis.client.AdminClient deploy.wsdd
cmd
双击运行,如果一切jar及类信息正常,你可以看到如下大概的cmd模式页面:
set AXIS_LIB=G:\workspace\AXIS_HOME\lib
set JAVA_CMD=java -Djava.ext.dirs=%AXIS_LIB%
set OUTPUT_PATH=G:\workspace\axisStubsServiceDemo\src
set Package=com.axisstubs.demo.client
%JAVA_CMD% org.apache.axis.wsdl.WSDL2Java -o%OUTPUT_PATH% -p%Package% UserInfoService.wsdl
cmd
如果一切正常的话,那么在你的工程com.axisstubs.demo.client包下应该会生成五个文件,分别为:User.java、UserInfoService_PortType.java、UserInfoServiceSerivce.java、UserInfoServiceServiceLocator.java以及UserInfoServiceSoapBindingStub.java
。
OK,所有的一切都已准备就绪了,就差运行测试了哇,传入不为空的User实例,返回SUCCESS,否则返回FAIL:
UserInfoServiceService service = new UserInfoServiceServiceLocator();//Service
UserInfoServiceSoapBindingStub client = new UserInfoServiceSoapBindingStub(new URL(service.getUserInfoServiceAddress()),service);
User user = new User();
user.setUsername("kevin cui");
user.setAge(25);
String retValue = client.addUser(user);
System.out.println(retValue);
运行结果如下:
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXException: Deserializing parameter 'user': could not find deserializer for type {http://localhost:8080/axis/services/UserInfoService}User
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:cuics
出错了。它是在告诉我们,在反序列化user参数的时侯找不到反序列化User类型,没有注册序列化和反序化?对的:
在server-config.wsdd的UserInfoService服务里加入如下: