- 解压axis2-1.7.8-bin.zip,看到bin目录
- 增加maven的依赖:需要删除servlet-api包,否则,如果项目引用了3.0以上的servlet-api会不起作用。
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>${axis2.version}</version>
</dependency>
3 进入bin目录,执行命令
wsdl2java -uri http://localhost:8080/EverParentManage/services/sayHello?wsdl -p com.eversec.protect.modules.webservices.client.test -o stub
参数解释:-p 是生成代码的包路径,-o 是代码的生成目录。
4. 在当前目录生成stub文件夹,打开,拷贝两个文件到项目中,修改报错(主要是包名)
5. 新建一个SayHelloClient类,用来调用stub
package com.nansw.protect.modules.webservices.client.test;
public class SayHelloClient {
public static void sayHello() {
try {
String url = "http://localhost:8080/ProManage/services/sayHello";
SayHelloStub stub = new SayHelloStub(url);
SayHelloStub.SayHello sayHello = new SayHelloStub.SayHello();
sayHello.setName("张三");
SayHelloStub.SayHelloResponse response = stub.sayHello(sayHello);
String result = response.get_return();
System.out.println(result);
} catch (Exception axisFault) {
axisFault.printStackTrace();
}
}
public static void main(String[] args) {
sayHello();
}
}
6 修改SayHelloStub类,增加打印日志,请求报文和返回报文
//省略
//adding SOAP soap_headers
_serviceClient.addHeadersToEnvelope(env);
// set the message context with that soap envelope
_messageContext.setEnvelope(env);
// add the message contxt to the operation client
_operationClient.addMessageContext(_messageContext);
System.out.println("请求报文:" + env);
//execute the operation client
_operationClient.execute(true);
org.apache.axis2.context.MessageContext _returnMessageContext = _operationClient.getMessageContext(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
org.apache.axiom.soap.SOAPEnvelope _returnEnv = _returnMessageContext.getEnvelope();
System.out.println("返回报文:" + _returnEnv);
Object object = fromOM(_returnEnv.getBody()
.getFirstElement(),
SayHelloResponse.class);
return (SayHelloResponse) object;
//省略
7.执行代码: