Axis2发布及调用WebService简单案例

本文档详细介绍了如何使用Axis2发布WebService服务,包括下载Axis2库,创建Maven项目,配置服务类和服务描述文件,部署到Tomcat,验证服务发布,以及编写并运行客户端代码进行调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.目录整体结构

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值