CXF是web service的一种实现方式,关于两者的具体的概念,本文不做具体阐述,详情请参考网上资料。本文接下来将会新建两个2个简单的工程,一个是服务端,一个是客户端,服务端提供接口,客户端调用接口,完成一个简单的交互。
1:工程截图
2:在服务端工程cxf的pom.xml下
- <dependencies>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-frontend-jaxws</artifactId>
- <version>3.1.7</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-core</artifactId>
- <version>3.1.7</version>
- </dependency>
- <dependency>
- <groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http-jetty</artifactId>
- <version>3.1.7</version>
- </dependency>
- </dependencies>
3:创建一个HelloWorld接口
- package com.qqw.webservice;
- import javax.jws.WebService;
- @WebService
- public interface HelloWorld {
- public String say(String str);
- }
4:实现HelloWorld接口
- @WebService
- public class HelloWorldImpl implements HelloWorld{
- @Override
- public String say(String str) {
- return "hello:"+str;
- }
- }
5:提供一个main方法暴露接口
- package com.qqw.webserviceImpl;
- import javax.xml.ws.Endpoint;
- import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
- import com.qqw.webservice.HelloWorld;
- public class Server {
- /**
- * @param args
- */
- public static void main(String[] args) {
- System.out.println("ws is start");
- HelloWorld hwHelloWorld=new HelloWorldImpl();
- String address="http://172.16.10.123/helloWorld";//ip地址可以是本机的ip地址或服务器的地址,后面的ws的名称可以随意
- //Endpoint.publish(address, hwHelloWorld);jdk提供的暴露接口的方法
- JaxWsServerFactoryBean factoryBean=new JaxWsServerFactoryBean();
- factoryBean.setAddress(address);
- factoryBean.setServiceClass(HelloWorld.class);
- factoryBean.setServiceBean(hwHelloWorld);
- factoryBean.create();
- System.out.println("ws is started");
- }
- }
6:点击运行就可以发布,然后去浏览器输入http://172.16.10.123/helloWorld?wsdl
7:客户端的代码不用自己写,可以去apache cxf官网下载,可以自动生成调用的代码,地址:http://cxf.apache.org/
找个文件夹解压,比如在E盘,然后配置环境变量,在path里面加上;E:\apache-cxf-3.1.9\bin,点击确认就行。cmd执行命令:
因为我的客户端工程在F盘下,我要把自动生成的代码放到src/main/java文件夹下面,然后再调用wsdl2java命令就行。
8.在客户端main方法调用
- HelloWorldService hService=new HelloWorldService();
- HelloWorld helloWorld = hService.getHelloWorldPort();
- System.out.println(helloWorld.say("小菜鸟"));
9:后台日志
至此,简单的CXF创建应用介绍完毕。