搭建Axis的WebService

准备:

到Apache官网下载Axis的包

http://axis.apache.org/axis/java/releases.html

下载后解压取WEB-INF-->lib下的jar放到项目工程


另外还需要添加activation.jar mail.jar


1. 配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
	
	<listener>
		<listener-class>org.apache.axis.transport.http.AxisHTTPSessionListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>AxisServlet</servlet-name>
		<display-name>Apache- Axis Servlet</display-name>
		<servlet-class>
			org.apache.axis.transport.http.AxisServlet
		</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/servlet/AxisServlet</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>*.jws</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>AxisServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>

</web-app>


2. 创建server-config.wsdd,放置在WEB-INF下,并配置

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
 
 <service name="PersonAction" provider="java:RPC">
  <parameter name="allowedMethods" value="*"/>
  <parameter name="scope" value="Request"/>
  <parameter name="className" value="com.kerryzb.axis.PersonAction"/>
 </service>
 
<transport name="http">
  <requestFlow>
   <handler type="URLMapper"/>
   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
  </requestFlow>
 </transport>
 <transport name="local">
  <responseFlow>
   <handler type="LocalResponder"/>
  </responseFlow>
 </transport>
 
</deployment>

3. 编写service类及方法

<pre name="code" class="java">package com.kerryzb.axis;

import java.rmi.Remote;

public class PersonAction implements Remote {
	
	public String getName(String name){
		System.out.println(name);
		return "person name : "+name;
	}
	
	public String getPerson(String name, float high){		
		String respxml = "<xml version=\"1.0\" encoding=\"UTF-8\"><name>"+name+"</name><high>"+high+"</high></xml>";
		System.out.println(respxml);		
		return respxml;
		
	}

}

 #这里写了两个方法,分别是传一个参数和两个参数的写法 

4. 在Tomcat中运行这个web工程,然后在客户端浏览器上访问

http://localhost:8080/TestWebService/services/PersonAction?method=getName&name=testname

http://localhost:8080/TestWebService/services/PersonAction?method=getPerson&name=testname&high=180.5

显示如上,WebService的服务端就写成功了。

5. 客户端调用WebService

<pre name="code" class="java">package com.hnisi.axis.client;

import java.io.StringReader;
import java.rmi.RemoteException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

public class CallService {

	public static void main(String[] args) throws ServiceException,
			RemoteException {
		Service service = new Service();
		Call call = (Call) service.createCall();

		call.setTargetEndpointAddress("http://localhost:8080/TestWebService/services/PersonAction");
		call.setOperationName("getPerson");

		call.addParameter("name", org.apache.axis.Constants.XSD_STRING,
				javax.xml.rpc.ParameterMode.IN);
		call.addParameter("high", org.apache.axis.Constants.XSD_FLOAT,
				javax.xml.rpc.ParameterMode.IN);

		call.setReturnType(org.apache.axis.Constants.XSD_STRING);

		String response = (String) call.invoke(new Object[] { "testname",
				180.5f });

		System.out.println(response);

		parse(response);

		call = null;
		service = null;

	}

	public static void parse(String protocolXML) {

		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			org.w3c.dom.Document doc = builder.parse(new InputSource(
					new StringReader(protocolXML)));

			Element root = doc.getDocumentElement();
			NodeList nodeList = root.getChildNodes();
			if (nodeList != null) {
				for (int i = 0; i < nodeList.getLength(); i++) {
					Node node = nodeList.item(i);
					System.out.println(node.getNodeName() + " = "
							+ node.getFirstChild().getNodeValue());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 



完整的工程请下载

http://download.csdn.net/detail/kerryzb/9550274




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kerryzb

你鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值