微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Axis2的相关准备工作,以及提供的一个简单的例子

参考网上的相关例子,来进行准备以及后续的开发工作。

一.  下载axis2-1.5.3-war.zip中的axis2.war这个文件放在tomcat目录下,启动tomcat就会把war文件转成一个可以跑起来的axis2的项目。

之后的相关准备工作都是在这个包得基础之上进行开发与测试的。

二.   以下就可以进行简单例子的开发。

     1.  进行服务端的开发:

          

public class WebServiceTest {

    public int add(int a,int b) {

    	return a + b;
    }
	
    public User getUser(String name) {
    	User user = new User();
    	user.setUsername(name);
    	return user;
    }
    
}

注意,上面的WebServiceTest是没有package的。copy这个类的class文件,放到tomcat目录下的webapps的axis2的WEB-INF目录的pojo文件夹下。

如果没有pojo这个目录就手动创建一个一个文件夹。然后在浏览器输入:http://localhost:8080/axis2/

点击Services的链接就可以看到刚才手动发布的WebServiceTest了,或者是浏览器地址栏输入:http://localhost:8080/axis2/services/listServices

你就可以看到你刚才粘贴过去的这个WebService了。

点击链接就可以看到wsdl文件内容了。内容很多,如果你看过axis1.x的介绍就知道wsdl文件的大致结构了。

clip_image004


    2.  测试这个webService的方法

复制上面的WebServiceTest的链接地址,然后带上方法名称和参数值即可测试调用是否成功。如下:

http://localhost:8080/axis2/services/WebServiceTest/sayHello?name=jack

http://localhost:8080/axis2/services/WebServiceTest这个是WebService的地址

/sayHello是方法名称,?name=jack是参数名称和值

在浏览器中输入上面的地址后,可以看到如下效果

clip_image006

可以看到返回值,和方法名称。ns:sayHelloResponse是方法名称,所有的方法名称后都会带上Response,后面的ns当然是当前方法所在的类的包名了,

这里没有package就是认的axis2的域名。同样,getAge方法,也是一样的调用方法

http://localhost:8080/axis2/services/WebServiceTest/getAge?i=22

结果如下:

clip_image008

  

     3.   下面就是客户端调用代码例子了:

    

package client;

import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;


public class ClientTest {

	public static void main(String[] args) throws AxisFault {
	 
		//RPCServiceClient是RPC方式调用
		RPCServiceClient client = new RPCServiceClient();
		Options options = client.getoptions(); 
		//设置调用WebService的URL 
		String address = "http://localhost:8080/axis2/services/WebServiceTest";
		EndpointReference epf = new EndpointReference(address); 
		options.setTo(epf);
		
		/** 
		 * * 设置将调用方法,http://ws.apache.org/axis2是方法 
		 * * 认(没有package)命名空间,如果有包名 
		 * * 就是http://service.hoo.com 包名倒过来即可 
		 * * sayHello就是方法名称了 
		 * */ 
//		QName qname = new QName("http://ws.apache.org/axis2","getUser");
//		//指定调用方法和传递参数数据,及设置返回值的类型 (需要设置好返回类型)
//		Object[] result = client.invokeBlocking(qname,new Object[] { "林伟" },new Class[] { User.class }); 
//		//值得注意的是axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。我们一般拿数组的第一个值,转换强转即可。
//		System.out.println("result is " + ((User)result[0]).getUsername()); 
		
		QName qname = new QName("http://ws.apache.org/axis2","add");
		Object[] result = client.invokeBlocking(qname,new Object[] { new Integer(422),new Integer(1) },new Class[] { int.class }); 
		System.out.println("result is " + result[0]);
	}
}

axis2的WebService客户端调用的返回对象是一个Object的数组,这点和axis1.x有很大不同。我们一般拿数组的第一个值,转换强转即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐