1.下载地址: http://www.apache.org/dyn/closer.lua/cxf/3.1.6 2.修改系统环境变量path 解压apache-cxf-3.1.6.zip文件夹 将解压后的文件夹下的bin目录的路径拷贝 修改系统环境变量为:D:\DevTools\Cxf\apache-cxf-3.1.6\bin 打开Cmd命令行窗口执行wsdl2java 若是出现如下提示,证实配置成功 C:\Users\xp>wsdl2java Missing argument: wsdlurl Usage : wsdl2java -fe|-front 3.开发webservice的服务端,有4步骤==================服务端 1.导入jar包 asm-3.3.1.jar commons-logging-1.1.1.jar cxf-2.7.8.jar geronimo-servlet_3.0_spec-1.0.jar jetty-continuation-8.1.14.v20131031.jar jetty-http-8.1.14.v20131031.jar jetty-io-8.1.14.v20131031.jar jetty-security-8.1.14.v20131031.jar jetty-server-8.1.14.v20131031.jar jetty-util-8.1.14.v20131031.jar neethi-3.0.2.jar stax2-api-3.1.1.jar woodstox-core-asl-4.2.0.jar wsdl4j-1.6.3.jar xmlschema-core-2.0.3.jar CXF:内置了jetty服务器 2.开发interface package com.xp.cn; import javax.jws.WebService; /** * @author xp * @ClassName: WebServiceDemo * @Description: webService服务端 * @date 2016年4月30日 下午8:27:44 */ @WebService public interface WebServiceDemo { String sayHello(String str); } 3.开发实现类 /** * @author xp * @ClassName: WebServiceImpl * @Description: TODO * @date 2016年4月30日 下午8:39:22 */ @WebService(endpointInterface = "com.xp.cn.IWebServiceDemo", serviceName = "webServiceImpl") public class WebServiceImpl implements IWebServiceDemo { @Override public String sayHello(String name) { return "你好" + name + new Date(); } } endpointInterface:指定接口的权限定名 serviceName : 指定一个服务的名称 4.发布Publish /** * @author xp * @Title: WebServicePublish.java * @Package com.xp.cn * @Description: TODO * @date 2016年4月30日 下午9:06:49 * @version V1.0 */ package com.xp.cn; import javax.xml.ws.Endpoint; /** * @author xp * @ClassName: WebServicePublish * @Description: TODO * @date 2016年4月30日 下午9:06:49 * */ public class WebServicePublish { public static void main(String[] args) { IWebServiceDemo demo = new WebServiceImpl(); //调用EndPoint发布服务 Endpoint.publish("http://127.0.0.1/XXX", demo); } } 测试是否成功 在浏览器中输入:http://127.0.0.1/XXX出现下图说明发布成功 能够点击连接进入wsdl,接下来记得章节会具体将到wsdl
4.编写WebService客户端======================================客户端 调用cxf提供的wsdl2java工具,更具wsdl生成相应的java代码 任何语言只要实现webservice,都须要提供,并暴露wsdl 操做以下图:
1.图java
2.图web
找到wsdl2java所生成的类,其中有一个继承了Service,该类的实实例能够当成工厂来使用 调用Service子类实例的getXXXPort方法
/** * @author xp * @Title: ClientTest.java * @Package com.xp.cn.test * @Description: TODO * @date 2016年4月30日 下午10:37:23 * @version V1.0 */ package com.xp.cn.test; import com.xp.cn.IWebServiceDemo; import com.xp.cn.WebServiceImpl; /** * @author xp * @ClassName: ClientTest * @Description: 客户端代码 * @date 2016年4月30日 下午10:37:23 * */ public class ClientTest { public static void main(String[] args) { WebServiceImpl service = new WebServiceImpl(); IWebServiceDemo webServiceImpl = service.getWebServiceImplPort(); String sayHello = webServiceImpl.sayHello("xp"); System.out.println(sayHello); } }
控制台输出:你好xpSat Apr 30 22:48:19 CST 2016apache
这个时候不能改掉服务端的java虚拟机api