一、部署cxf+ant环境
ant:http://download.csdn.net/detail/qwkxq/9706182
cxf:http://download.csdn.net/detail/qwkxq/9706179
下载以后解压,目录结构如下
配置环境变量:
ANT_HOME=D:\PATH\apache-ant-1.8.4
CXF_HOME=D:\PATH\apache-cxf-2.4.2
CATALINA_HOME=D:\PATH\apache-tomcat-6.0.18\apache-tomcat-6.0.18
JAVA_HOME=C:\Java7
PATH=%CXF_HOME%\bin;%CATALINA_HOME%\bin;%ANT_HOME%\bin;%JAVA_HOME%\bin;
CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar;.\build\classes
cxf中常用的ant命令
“ant” 读取默认的build.xml文件构建项目(编译)
“ant server” 启动webservice服务端
“ant client” 启动webservice客户端调用服务端
“ant deploy -Dtomcat=true” 将服务端程序部署到tomcat,默认访问的是一个servlet,映射所有services/*的路径,访问地址是:“localhost:8080/项目名/services”
“ant undeploy -Dtomcat=true” 卸载部署在tomcat的服务端程序
“ant clean” 清空项目
二、开发cxf入门程序
1.服务端接口
package cn.xt.test;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
@WebService
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface IMyService {
public void sayHi();
}
package cn.xt.test;
import java.util.Date;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
@WebService
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public class MyService implements IMyService {
public void sayHi(){
System.out.println("hi......"+new Date().toLocaleString());
}
}
这里的@BindingType有2个常用的值:
javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING:发布soap1.1版本的服务端
javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING:发布soap1.2版本的服务端
3.发布服务
public static void main(String[] args) {
IMyService service = new MyService();
JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();
bean.setAddress("http://192.168.1.3:9999/hello");
bean.setServiceClass(IMyService.class);
bean.setServiceBean(service);
//添加cxf拦截器
bean.getInInterceptors().add(new LoggingInInterceptor());
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.create();
}
访问http://192.168.1.3:9999/hello?wsdl出现wsdl说明,则说明发布成功
服务端控制台会有如下打印
信息: Inbound Message
----------------------------
ID: 6
Address: http://192.168.1.3:9999/hello?wsdl
Http-Method: GET
Content-Type:
Headers: {Accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8], accept-encoding=[gzip, deflate, sdch], Accept-Language=[zh-CN,zh;q=0.8], Cache-Control=[max-age=0], connection=[keep-alive], Content-Type=[null], Host=[192.168.1.3:9999], Upgrade-Insecure-Requests=[1], User-Agent=[Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36]}
--------------------------------------
4.使用cxf自带命令“wsdl2java” 生成客户端代码
wsdl2java -d . http://192.168.1.3:9999/hello?wsdl
5.调用
public static void main(String[] args) {
IMyService service = new IMyServiceService().getIMyServicePort();
service.sayHi();
}
