二、CXF与springMVC整合的webService客户端调用

1、在另外一个项目中,调用已经发布好的webService时,首先在客户端项目中创建一个接口如下:

package com.gstd.c;

import javax.jws.WebParam;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

import javax.jws.soap.SOAPBinding.Style;


@WebService(targetNamespace="gstd")//注意,该出的targetNamespace的值必须和webService服务项目中定义的必须一致,否则调用不成功

@SOAPBinding(style = Style.RPC)

public interface IComplexUserService {//接口名称可以不一样,方法名称、参数格式必须保持一致,否则无法找到服务的实现的方法

  public String getUserByName(@WebParam(name = "name") String name);

}

2、在main方法中调用

package com.gstd;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;


public class Exa {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

	JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

        factory.setServiceClass(IComplexUserService2.class);

        factory.setAddress("http://localhost:2562/项目名称/webservice/HelloWorld");//webservice是web.xml中配置的cxf中央控制器,HelloWorld是暴漏出来的地址。

        factory.getInInterceptors().add(new LoggingInInterceptor());//cxf对interceptor拦截器的的支持
        factory.getOutInterceptors().add(new LoggingOutInterceptor());

        IComplexUserService2 service = (IComplexUserService2) factory.create();
        System.out.println(service.getUserByName("你好啊!!"));

        System.out.println("#############Client getUserByName##############");
        
        
	}

}

你可能感兴趣的:(CXF,webService)