版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014248473/article/details/87533300
CXF实现WebService入门示例
一、环境介绍
cxf:2.6.2
jdk:1.7
ide:IDEA14
(-)服务端借助jetty发布服务
(-)客户端使用wsdl2java工具生成(需将cxf配置环境变量)
二、服务端
1.jar包(CXF的lib目录下都有)
asm-3.3.1.jar
commons-logging-1.1.1.jar
cxf-2.6.2.jar
geronimo-servlet_2.5_spec-1.1.2.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
xmlschema-core-2.0.3.jar
jetty-continuation-7.5.4.v20111024.jar
jetty-http-7.5.4.v20111024.jar
jetty-io-7.5.4.v20111024.jar
jetty-security-7.5.4.v20111024.jar
jetty-server-7.5.4.v20111024.jar
jetty-util-7.5.4.v20111024.jar
2.接口
package com.yale.service;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHello(String name);
}
3.接口实现
package com.yale.service;
import javax.jws.WebService;
@WebService(endpointInterface = "com.yale.service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
@Override
public String sayHello(String name){
System.out.println("sayHello方法被调用");
return ("Hello "+name);
}
}
4.发布
package com.yale.server;
import com.yale.service.HelloWorld;
import com.yale.service.HelloWorldImpl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class MainServer {
public static void main(String[] args) {
JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
factoryBean.setAddress("http://localhost:8989/crazyit");
factoryBean.setServiceClass(HelloWorld.class);
factoryBean.setServiceBean(new HelloWorldImpl());
factoryBean.create();
System.out.println("发布成功!");
}
}
5.测试
浏览器打开:http://localhost:8989/crazyit?wsdl
三、客户端
1.jar包
asm-3.3.1.jar
commons-logging-1.1.1.jar
cxf-2.6.2.jar
geronimo-servlet_2.5_spec-1.1.2.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
xmlschema-core-2.0.3.jar
2.wsdl2java生成客户端
- 新建一个Java项目
- 在src目录下进入cmd窗口
- 输入命令:wsdl2java -d . -p com.yale.service http://localhost:8989/crazyit?wsdl
3.精简客户端(可选)
- 只保留HelloWorld接口java文件,其他都删了
- HelloWorld接口报错的那一行删掉(含有ObjectFactory的那一行)
4.生成代理调用
package com.yale.client;
import com.yale.service.HelloWorld;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class ClientMain {
public static void main(String[] args) {
JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
bean.setAddress("http://localhost:8989/crazyit");
bean.setServiceClass(HelloWorld.class);
HelloWorld proxy = (HelloWorld)bean.create();
System.out.println(proxy.sayHello("tom"));
}
}