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##############");
}
}