Axis 1.x 客户端调用CXF 2.7 服务端

最近在项目里面使用了webservices技术,但是框架 客户那边已经选择好了。 服务端已经完成了。我们没有选择。只能调用。

这边客户端是使用的axis1.x  服务端使用的是CXF 2.7 下面我们就简单的写一个用例 来介绍下webservices搭建和调用。


首先 我们到http://cxf.apache.org上面下载cxf2.7版本。

在Eclipse里面新建一个Java工程  把jar增加到项目里面。在src下面新建一个包 me.service.biz


下面我们开始新建一个接口:

package me.service.biz;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public abstract interface EwmBiz {

	@WebMethod
	public  String getEwmmethodFor(@WebParam(name="text") String text) throws Exception;
	
}

在包me.service.biz.impl下面新建一个实现类

package me.service.biz.impl;

import javax.jws.WebService;

import me.service.biz.EwmBiz;


@WebService(endpointInterface="me.service.biz.EwmBiz",name="EwmBiz")
public class EwmBizImpl implements EwmBiz{

	@Override
	public String getEwmmethodFor(String text) throws Exception {
		
		System.out.println("parameter is =======>>>> " + text);
		
		return "parameter is =======>>>> " + text;
	}
	
}

我们的接口就完成了 下面我们写一个main方法来启动服务端:

package me.service;

import me.service.biz.EwmBiz;
import me.service.biz.impl.EwmBizImpl;

import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class ServiceRun {

	public static void main(String[] args) {

		System.out.println("Starting Server"); 
		EwmBiz ewmBiz = new EwmBizImpl(); 
        String address = "http://localhost:8090/EwmBiz"; 
        javax.xml.ws.Endpoint.publish(address, ewmBiz); 
        
		System.out.println("服务启动完成。。。。");

	}
}

上面启动一下 我们的服务端就完成了。


下面我们新建一个Java工程  完成client 客户端的调用  把axis下面的jar全部加到lib下面  在加一个commons-logging.jar

在src下面新建一个Java类

代码如下:

package me.client;

import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class ClientRun {
	
	public static void main(String[] args) throws Exception {
		
		String url = "http://localhost:8090/EwmBiz";
		Service service = new Service();
		Call call = (Call) service.createCall();
		
		call.setTargetEndpointAddress(new URL(url));
		
		String targetNamespace = "http://biz.service.me/";
		
		QName qName = new QName(targetNamespace,"getEwmmethodFor");
		call.setOperationName(qName);
		
//		QName qName2 = new QName(targetNamespace, "");
		
		call.addParameter("text", null,ParameterMode.IN);
		
		String message = (String) call.invoke( new Object[]{"yangzhongren"});
		System.out.println(message);
	}
	
}

这样我们测试一下 可以的 是调用通了。


有什么问题 可以随时在下面评论


你可能感兴趣的:(Axis 1.x 客户端调用CXF 2.7 服务端)