Axis2用法(2)客户端和服务端

1、封装准备

根据上篇,wsdl文件生成客户端和服务端代码后,需要做一定的封装,方便调用。
封装前做如下准备:
(1)将wsdl文件生成的java代码(上篇的工程AttachService中的src文件夹下的java代码。)打出jar包:AttachService-Axis2-1.6.2.jar。
(2)创建客户端和服务端封装工程:Demo-Axis2-1.6.2。注意:创建“Dynamic Web Project”工程。
(3)将Axis2的所有jar包(E:\axis2-1.6.2\lib),放到工程Demo-Axis2-1.6.2的lib下,导入工程的Libraries。
(4)将Axis2的conf文件夹(E:\axis2-1.6.2)拷贝到工程Demo-Axis2-1.6.2的WEB-INF文件夹下。
(5)将Axis2的modules和services文件夹(E:\axis2-1.6.2\repository)拷贝到工程Demo-Axis2-1.6.2的WEB-INF文件夹下。
(6)将Axis2的web.xml(E:\axis2-1.6.2\webapp\WEB-INF),拷贝到工程Demo-Axis2-1.6.2的WEB-INF文件夹下。
(7)将刚打出的AttachService-Axis2-1.6.2.jar,拷贝到Demo-Axis2-1.6.2的lib文件夹下;并导入工程的libraries中。
(8)将上一篇中生成的AttachService.aar服务包,放到Demo-Axis2-1.6.2的WEB-INF/services/文件夹下,(该文件夹就是刚拷贝进来的)。

2、客户端

(1)类名

在wsdl文件生成的客户端和服务端代码中,客户端类为:SendAttachServiceStub.java。(应该说以Stub结尾的这个类是客户端类)。我们就使用该类的对象,发送Soap消息。

(2)封装

package com.yht.msg.client;

import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;

import com.yht.msg.SendAttach;
import com.yht.msg.SendAttachResponse;
import com.yht.msg.SendAttachServiceStub;

/**
 * 调用wsdl文件生成的客户端类,创建一个客户端发送消息。
 * @author Administrator
 *
 */
public class SendAttachClient 
{
	/**
	 * 发送消息主题字符串。
	 */
	private String subject;
	
	/**
	 * 服务地址。
	 */
	private String serviceAddress;
	
	/**
	 * 声明客户端对象。
	 */
	private SendAttachServiceStub stub;
	
	/**
	 * 设置消息体的主题内容。
	 * @param subject 主题内容。
	 */
	public void setSubject(String subject)
	{
		this.subject = subject;
	}
	
	/**
	 * 设置消息的服务地址,即你的消息要发到哪儿去。
	 * @param serviceAddress 服务地址。
	 */
	public void setServiceAddress(String serviceAddress) 
	{
		this.serviceAddress = serviceAddress;
	}

	/**
	 * 发送消息的方法。
	 * @return 发送成功的响应。
	 */
	public String sendAttach()
	{
		String result = null;
		SendAttachResponse response = null;
		
		//1、根据服务地址,创建一个发送消息的客户端。
		try
		{
			stub = new SendAttachServiceStub(serviceAddress);
		}
		catch (AxisFault e1)
		{
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		//2、创建一个发送消息的请求消息体。
		SendAttach sendAttach14 = new SendAttach();
		sendAttach14.setArgs0(subject);
		
		//3、根据请求消息体,发送消息并获取响应。
		try
		{
			response = stub.sendAttach(sendAttach14);
		}
		catch (RemoteException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//4、如果获取的响应不为空,获取响应的字符串内容。
		if(response != null)
		{
			result = response.get_return();
		}
		
		return result;
	}
}


3、服务端

(1)接口

在wsdl文件生成的客户端和服务端代码中,会有一个接口类SendAttachServiceSkeletonInterface.java和接口实现类SendAttachServiceSkeleton.java。作为服务端时,service.xml中默认的处理接收消息的类就是SendAttachServiceSkeleton.java。

(2)调用

创建类GetAttachService实现接口SendAttachServiceSkeletonInterface。修改aar包中service.xml文件中的内容:<parameter name="ServiceClass">com.yht.msg.SendAttachServiceSkeleton</parameter>;将com.yht.msg.SendAttachServiceSkeleton替换为工程Demo-Axis2-1.6.2中实现了接口SendAttachServiceSkeletonInterface的类GetAttachService。即<parameter name="ServiceClass">com.yht.msg.service.GetAttachService</parameter>。

服务端源代码如下:
package com.yht.msg.service;

import com.yht.msg.SendAttach;
import com.yht.msg.SendAttachResponse;
import com.yht.msg.SendAttachServiceSkeletonInterface;

public class GetAttachService 
	implements SendAttachServiceSkeletonInterface
{
	
	public SendAttachResponse sendAttach(SendAttach arg0) 
	{
		// TODO Auto-generated method stub
		System.out.println(arg0.getArgs0());
		
		SendAttachResponse response = new SendAttachResponse();
		response.set_return("success");
		return response;
	}
	
}

4、SoapUI调测

(1)客户端调测

将wsdl文件导入soapUI,配置soapUI接受消息地址,开启接受消息的服务端。写客户端测试代码如下:
package main;

import com.yht.msg.client.SendAttachClient;

/**
 * 客户端测试类。
 * @author Administrator
 *
 */
public class Test 
{
	/**
	 * 入口方法。
	 * @param args
	 */
	public static void main(String[] args)
	{
		String result = null;
		String subject = "Hello Axis2-1.6.2!";
		String serviceAddress = "http://127.0.0.1:8088/SendAttachService";
		
		//创建客户端类。
		SendAttachClient client = new SendAttachClient();
		
		//设置消息体内容。
		client.setSubject(subject);
		
		//设置服务地址。
		client.setServiceAddress(serviceAddress);
		
		//发送消息获取,结果。
		result = client.sendAttach();
		
		//打印结果。
		System.out.println(result);
	}
}
运行该类,查看开启的soapUI是否正确接受到发送的消息。

(2)服务端调测

3.(2)中的demo服务端类,接受到消息体后打印消息内容,并返回响应“success”。将Demo-Axis2-1.6.2放到tomcat上启动;利用soapUI发送消息到Demo。soapUI发送地址如下:
地址格式:http://服务器IP:服务器端口/应用名/services/发布的服务名(service.xml中的service的名称)
地址实例:http://localhost:8080/Demo-Axis2-1.6.2/services/SendAttachService

发送后,查看eclipse控制台是否打印了,soapUI发送来的消息;soapUI是否正确接受了来自eclipse的响应“success”。
soapUI的基本操作,参见附件。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值