axis2实现webservice分布式开发

阅读更多

因为工作关系这两天在学习axis2实现webservice,然后就在网上找相关的资料,不过在网上并没有找到我想要的东西,那些资料大多写的很乱且对于初学者难于理解,所以我把我写好的代码贴出来,以后能用的上的朋友可以一起研究下

webservice就是web服务,可实现分布式开发

这里简单介绍下客户端和服务器端得代码,(客户端和服务端可放在一个工程,也可分成两个工程),所需的jar文件如果不知道有哪些就把所有的axis2的jar文件都考进去

1客户端就一个文件

import javax.xml.stream.FactoryConfigurationError;

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.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

public class Test {

public static void main(String[] args) {
ServiceClient sender = null;
try {
String uri = "http://localhost:8080/Axis2Server/services/CRMMgrService";
String serverName = "ServerResponse";
// String key = "id";
// String num = "001";
// 创建一OMFactory 对象来创建OMElement对象
OMFactory fac = OMAbstractFactory.getOMFactory();
OMElement method = fac.createOMElement(serverName,
OMAbstractFactory.getOMFactory().createOMNamespace(
"http://mcerp.service.pojo/xsd",
"ServerObjectRequest"));// 
// OMElement value = fac.createOMElement(key, null);// 
// value.addChild(fac.createOMText(value, num));
// method.addChild(value);

Options options = new Options();
EndpointReference epr = new EndpointReference(uri);// 獲得代理服務
options.setTo(epr);
options.setAction("urn:" + serverName);// 执行方法

options.setTransportInProtocol(Constants.TRANSPORT_HTTP);// 传输协议为HTTP
options.setProperty(Constants.Configuration.ENABLE_REST,
Constants.VALUE_TRUE);// 方法为rest

sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(method);
System.out.println(result.getFirstElement().getText());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sender != null) {
try {
sender.cleanupTransport();
} catch (AxisFault e) {
e.printStackTrace();
}
}
}
}

}

 
 2.服务端需要一个java文件和services.xml

package com.test.service;
/*
 *   version 1.0
 * 客户关系管理对象容器,包括业务模型有
 * 客户基本资料,客户评估,客户关怀,合同管理等客户业务模型对象
 */



public class CRMMgrService {

	public void ServerObjectRequest(String str)
	{
		System.out.println("hello world!");
	}
	
	public String ServerResponse()
	{
		return "hello-response";
	}
	
	public String ServerPOJOResponse()
	{
		return "hello-pojo";
	}
}

 

3.在服务端的WEB-INF下新建services\CRMMgr\META-INF文件目录,在META-INF目录下新建services.xml

 



	the pojo web service interfaces
	
		
		
	
	
	
		com.test.service.CRMMgrService
	

 这样只要运行客户端代码就能够得到服务端的响应

你可能感兴趣的:(aixs2,webservice,java)