本博客 猫叔的博客,转载请申明出处
学习系列
Apache CXF一款WebService RPC框架入门教程
CXF官网:
http://cxf.apache.org/
Apache CXF是一个开源的WebService RPC框架
,是由Celtix和Codehaus XFire合并而成的。它可以说是一个功能齐全的集合
。
功能特性:
- 支持
Web Service标准
,包括SOAP(1.1、1.2)规范、WSI Basic Profile...等等我也不了解的,这里就不一一举例了。 - 支持
JSR相关规范和标准
,包括....同上。 - 支持
多种传输协议和协议绑定(SOAP、REST/HTTP、XML)、数据绑定(JAXB2.X、Aegis、Apache XML Beans)
。
还是先从案例入手吧
项目源码地址:
RPC_Demo,记得是项目里面的
comgithubcxf
- 1、使用IDEA构建一个maven项目,我选择了
maven-archetype-webapp
构建基本框架。当然你可能还需要创建一些目录
- 2、我想是时候先配置好主要的
pom
文件了。
4.0.0
cxf
comgithubcxf
1.0-SNAPSHOT
war
comgithubcxf Maven Webapp
http://www.example.com
UTF-8
1.7
1.7
3.1.7
4.0.9.RELEASE
org.springframework
spring-context
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.apache.cxf
cxf-rt-frontend-jaxws
${cxf.version}
org.apache.cxf
cxf-rt-transports-http
${cxf.version}
org.apache.cxf
cxf-rt-transports-http-jetty
${cxf.version}
junit
junit
4.11
test
comgithubcxf
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
maven-surefire-plugin
2.22.1
maven-war-plugin
3.2.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
- 3、构建Server端还有其服务实现,接口使用
@WebService
注解,标明是一个WebService远程服务接口
。
package com.github.cxf.server;
import javax.jws.WebService;
/**
* Create by UncleCatMySelf in 21:57 2019\4\23 0023
*/
@WebService
public interface CxfService {
String say(String someOne);
}
在实现类上也同样加上,并通过endpointInterface
标明对接的接口实现
package com.github.cxf.server;
import javax.jws.WebService;
/**
* Create by UncleCatMySelf in 21:57 2019\4\23 0023
*/
@WebService(endpointInterface = "com.github.cxf.server.CxfService")
public class CxfServiceImpl implements CxfService {
@Override
public String say(String someOne) {
return someOne + ",Welcome to Study!";
}
}
- 4、编写对应的cxf-server.xml文件(核心点),这里我参考了官网的案例
- 5、然后就是我们的
web.xml
文件了,
Archetype Created Web Application
contextConfigLocation
classpath:cxf-server.xml
org.springframework.web.context.ContextLoaderListener
CXFServer
org.apache.cxf.transport.servlet.CXFServlet
1
CXFServer
/ws/*
- 6、配置tomcat,由于我是IDEA的环境,所有我就截图给大家看看
然后启动tomcat即可,如果一起正常的话,老干妈保佑!
- 7、访问测试服务端,这时我们可以访问
http://localhost:8080/ws/server?wsdl
,如果你看到了一下的画面,就是启动成功!
- 8、服务端就先让它运行着,接着我们在同一个项目里面创建
客户端
的,这个比较简单,你可以先准备一个cxf-client.xml
文件,配置对应的WebService服务接口,确定访问的地址,注意是HTTP地址哦,WebService就是采用HTTP协议通信的。
- 9、然后编写一个client的启动程序,并运行,我想你会成功的!因为我看到了下图!
package com.github.cxf.client;
import com.github.cxf.server.CxfService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Create by UncleCatMySelf in 21:56 2019\4\23 0023
*/
public class CxfClient {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:cxf-client.xml");
CxfService client = (CxfService)context.getBean("client");
System.out.println(client.say("MySelf"));
}
}
WebService 是一种跨平台的RPC技术协议。
公众号:Java猫说
学习交流群:728698035
现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。