首先下载apache-cxf-2.2.12.tar.gz 包
假设远程接口地址:http://192.168.1.100:8086/services/Email?WSDL
使用wsdl2java 工具把接口实体弄下来:
wsdl2java -d src -client http://192.168.1.100:8086/services/Email?WSDL
package cn.com.madaptor.gfjj.common;
import legion.webservice.innermail.EmailService;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.log4j.Logger;
/**
@author chenluozhi
**/
public class CXFServiceOaUtil {
private static final Logger logger = Logger.getLogger(CXFServiceOaUtil.class);
public static JaxWsProxyFactoryBean factoryBean = null;
/**
* CXF 接口调用类
* @param serviceClass 例如:EmailService.class
* @param serviceName 例如Email(就是?号前边那个)
* @return
* @throws Exception
*/
public static Object invoke(Class serviceClass ,String serviceName){
if(null==factoryBean){
factoryBean=new JaxWsProxyFactoryBean();
factoryBean.getInInterceptors().add(new LoggingInInterceptor());
factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());
}
factoryBean.setServiceClass(serviceClass);
factoryBean.setAddress(AppUtil.getEnvPro("ws_url")+"services/"+serviceName+"?WSDL");
return factoryBean.create();
}
public static void main(String[] args) {
CXFServiceOaUtil c = new CXFServiceOaUtil();
EmailService emailService = (EmailService)c.invoke(EmailService.class, "Email");
}
}