axis实现webservice

转:http://blog.csdn.net/lixj2009/article/details/4752721

首先到apache的网站下载axis的开发包,好久没看了,现在已经开始出2.0的啦,不过好像还不是很成熟,这里,我们还是用1.x的包。最新的是1.4的包。

一、服务器端开发

首先编写服务端程序,这时我们完全不用考虑他是不是当作webservcies来发布的,因为在写法上没有什么不同。比如我们写了一个很简单的java程序,代码如下:

package com.service;
public class Calculator {
	public int add(int i1, int i2) {
		System.out.println("调用add方法");
		return i1 + i2;
	}

	public int subtract(int i1, int i2) {
		System.out.println("调用subtract方法");
		return i1 - i2;
	}

}

如果我们要把他发布成为services,首先需要把axis-1_3下的lib文件复制到我们的web服务的web-inf 的lib下。 然后在web.xml里增加以下内容

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

	xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler"
	xmlns="http://xml.apache.org/axis/wsdd/">
	<globalConfiguration name="defaultClientConfig">
		<requestFlow name="RequestFlow1" type="">
			<handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">
				<parameter name="scope" value="session" />
			</handler>
			<handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">
				<parameter name="scope" value="request" />
				<parameter name="extension" value=".jwr" />
			</handler>
		</requestFlow>
	</globalConfiguration>
	<handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />
	<handler name="LocalResponder"
		type="java:org.apache.axis.transport.local.LocalResponder" />
	<handler name="Authenticate"
		type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
		
	<transport name="http" type="">
		<requestFlow name="RequestFlow1" type="">
			<handler name="Handler1" type="URLMapper" />
			<handler name="Handler2"
				type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
		</requestFlow>
	</transport>
	<transport name="local" type="">
		<responseFlow name="ResponseFlow1" type="">
			<handler name="Handler1" type="LocalResponder" />
		</responseFlow>
	</transport>

	<service name="Calculator" type="" provider="java:RPC" style="rpc"
		use="encoded">
		<parameter name="scope" value="Request" />
		<parameter name="className" value="com.service.Calculator" />
		<parameter name="allowedMethods" value="*" />
		<namespace>http://example2.userguide.samples</namespace>
	</service>
</deployment> 

其中要发布的每个service都需要加上一个service的节点描述,其他多余的servie节点可以删除的,这样重启tomcat后,我们就可以以http://localhost:8080/services/Calculator 来访问这个service了,同样以http://localhost:8080/services/Calculator?wsdl 访问到它的wsdl描述文件。

二、客户端开发

在开发工具中引进lib下的jar包;然后编写客户端程序

package com.client;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;

public class CalcClient
{
	public static void main(String[] args) throws Exception {
		try {
			//String endpoint = "https://localhost:8440/services/Calculator";
			String endpoint = "http://127.0.0.1:8090/axisService/services/Calculator";
			Integer i1 = new Integer(1);
			Integer i2 = new Integer(2);
			Service service = new Service();
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(new java.net.URL(endpoint));
			call.setOperationName("add");//调用方法的名字
			call.addParameter("i1", XMLType.XSD_INT, ParameterMode.IN);
			call.addParameter("i2", XMLType.XSD_INT, ParameterMode.IN);
			call.setReturnType(XMLType.XSD_INT);
			Integer ret = (Integer) call.invoke(new Object[] { i1, i2 });
			System.out.println("Got result : " + ret);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
} 

其中 setOperationName就是指定执行的方法,addParameter就是指定参数

运行一下吧,结果:

Got result : 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值