1.下载axis2所需的jar包http://mirrors.shu.edu.cn/apache/axis/axis2/java/core/1.7.9/axis2-1.7.9-bin.zip
2.创建maven项目axis2-service,解压axis2-1.7.9-bin.zip文件,打开解压后的文件axis2-1.7.9,复制lib文件夹及其目录下的所有jar包到项目/axis2-service/src/main/webapp/WEB-INF目录下
3.将lib下的jar包引入到项目中
4.编写服务类SampleService.java
package com.szcatic.service;
import javax.xml.stream.XMLStreamException;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
/**
* http://localhost:8088/axis2-service/services/UserGuideSampleService?wsdl
* @author zsx
*
*/
public class SampleService {
public OMElement sayHello(OMElement element) throws XMLStreamException {
element.build();
element.detach();
String rootName = element.getLocalName();
System.out.println("Reading " + rootName + " element");
OMElement childElement = element.getFirstElement();
String personToGreet = childElement.getText();
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("sayHelloResponse", omNs);
OMElement value = fac.createOMElement("greeting", omNs);
value.addChild(fac.createOMText(value, "Hello, " + personToGreet));
method.addChild(value);
return method;
}
public void ping() {
System.out.println("ping");
}
}
5.在/axis2-service/src/main/webapp/WEB-INF/services/hellworld/META-INF目录下创建services.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定服务名 -->
<service name="UserGuideSampleService">
<description>
This is a sample service created in the Axis2 User's Guide
</description>
<parameter name="ServiceClass">com.szcatic.service.SampleService</parameter>
<operation name="sayHello">
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
</operation>
<operation name="ping">
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" />
</operation>
</service>
6.在web.xml中配置servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>axis2-service</display-name>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
7.将项目部署到tomcat,并启动tomcat服务
8.打开浏览器,输入链接http://localhost:8088/axis2-service/services/UserGuideSampleService?wsdl
从上面结果可以看出,服务发布成功
9.编写客户端SampleClient.java
package com.szcatic.client;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.Constants;
import org.apache.axis2.client.ServiceClient;
public class SampleClient {
private static EndpointReference targetEPR = new EndpointReference(
"http://localhost:8088/axis2-service/services/UserGuideSampleService");
public static OMElement greetUserPayload(String personToGreet) {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("sayHello", omNs);
OMElement value = fac.createOMElement("personToGreet", omNs);
value.addChild(fac.createOMText(value, personToGreet));
method.addChild(value);
return method;
}
public static void main(String[] args) {
try {
OMElement payload = SampleClient.greetUserPayload("John");
Options options = new Options();
options.setTo(targetEPR);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(payload);
String response = result.getFirstElement().getText();
System.out.println(response);
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
10.运行客户端代码
log4j:WARN No appenders could be found for logger (org.apache.axiom.locator.DefaultOMMetaFactoryLocator).
log4j:WARN Please initialize the log4j system properly.
Hello, John
从输出结果看出客户端调用服务端成功
11.目录整体结构