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.图
2.图
找到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 2016
这个时候不能改掉服务端的java虚拟机