1.CXF是基于JAX-WS实现的,JAX-WS规范是一组XML web services的JAVA API,它使用户无需编写复杂的SOAP ENV,WSDL。在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。

在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。 
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。

2.使用CXF开发Webservice工程步骤:

1).为CXF设置编译和开发环境 
在http://cxf.apache.org/download.html 下载相应的CXF包,/lib目录下的jar 文件引入工程 
2).创建基于XCF的Webservice服务端工程。
3).编写Webservice的客户端程序,调用服务端服务。

3.CXF中的Factory:

CXF不但可以使用JAX-WS开发web服务,也可以将POJO发布为web服务,对于这两种不同的方式,对应的factory如下:

服务端                               客户端

JAX-WS                      JaxWsServerFactoryBean             JaxWsProxyFactoryBean

POJO                           ServiceFactoryBean                     ClientProxyFactoryBean

4.CXF使用JAX-WS开发服务端:

(1).定义服务接口:

在接口上添加Webservice注解:@WebService。如:

package service;
import javax.jws.WebService;
@WebService
public interface OrderProcess {
String processOrder(Order order);
}

(2).实现服务接口:

在实现类上也添加Webservice注解:@WebService(endpointInterface = 服务接口全路径,   serviceName = 对外发布的服务名)。如:

package service;
import javax.jws.WebService;
@WebService(endpointInterface = "service.OrderProcess",serviceName=”order”)
public class OrderProcessImpl implements OrderProcess {  public String processOrder(Order order) {  return "hello world"+order;  }
}  

(3).对外发布服务:

//创建web服务工厂
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
//设置服务类
factory.setServiceClass(服务接口实现类.class);
//设置对外发布服务地址
factory.setAddress(对外发布的服务地址);
//创建服务
Server server = factory.create();
//启动服务
server.start();  

5.CXF使用JAX-WS开发客户端:

//创建web服务代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
//设置要调用的web服务服务端发布地址
factory.setAddress(web服务的发布地址);
//设置要调用的web服务
factory.setServiceClass(web服务接口.class);
//创建web服务对象
服务接口 对象 = (服务接口) factory.create();
通过对象调用web服务的方法
6.CXF使用POJO开发服务端:
和使用JAX-WS开发方式前两步完全一样,第三步稍有不同如下:
//创建web服务工厂
ServiceFactoryBean svrFactory = new ServiceFactoryBean();
//设置服务类
svrFactory.setServiceClass(服务接口实现类.class);
//设置对外发布服务地址
svrFactory.setAddress(对外发布的服务地址);
//创建服务
Server server = svrFactory.create();
//启动服务
server.start(); 

6.CXF使用POJO开发客户端:

和JAX-WS方式除了代理工厂不同以外,其他均相同:

//创建web服务代理工厂
ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
//设置要调用的web服务服务端发布地址
factory.setAddress(web服务的发布地址);
//设置要调用的web服务
factory.setServiceClass(web服务接口.class);
//创建web服务对象
服务接口 对象 = (服务接口) factory.create(); 

通过对象调用web服务的方法

7.CXF与Spring的集成:

(1).对工程引入spring支持。

(2).在web.xml文件中添加spring和CXF相应的配置如下:

<web-app>  <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>spring配置文件路径</param-value>  </context-param>  <listener>  <listener-class>  org.springframework.web.context.ContextLoaderListener  </listener-class>  </listener>  <servlet>  <servlet-name>CXFServlet</servlet-name>  <display-name>CXF Servlet</display-name>  <servlet-class>  org.apache.cxf.transport.servlet.CXFServlet  </servlet-class>  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>  <servlet-name>CXFServlet</servlet-name>  <url-pattern>/service/*</url-pattern>  </servlet-mapping>
</web-app>  

(3).在spring配置文件中导入CXF的相关配置如下:

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  

(4).在spring配置文件中配置要发布的web服务如下:

<jaxws:endpoint  id="……"  implementor="服务接口实现类全路径"  address="/web服务发布地址(相对地址)" />  

8. 补偿

使用CXF中的wsdl2java 生成client访问代码,其访问方式也是一种,区别于以上。

引自:https://blog.csdn.net/chjttony/article/details/6196289

转载于:https://www.cnblogs.com/redqueen/p/9897365.html

cxf客户端访问方式相关推荐

  1. 二进制安装kubernetes1.14.1-pod配置清单之客户端访问方式03

    查看pod配置清单 参考: (https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/) [root@k8s-maste ...

  2. 客户端访问方式MAPI

    1.是微软为ExchangeServer定制的访问方式,也是微软推荐的Exchange访问方式: 2.客户端必须安装MicrosoftOfficeOutlook(2007或2010): 3.客户端使用 ...

  3. kafka python客户端连接风暴_kafka配置单向ssl加密,以及加密后python客户端访问方式(kafka v1.1.0)...

    一.kafka broker配置以及sh客户端的使用 最近在使用kafka集群的过程中,为了保证安全性,配置了ssl加密,首先按照官网的配置进行如下的设置 #!/bin/bash #Step 1 ke ...

  4. Exchange Server 2013 LAB Part 4.内部客户端访问

    关于Exchange服务器内部客户端访问的更详细介绍,请参考Exchange Server 2010链接:http://xutonglin.blog.51cto.com/8549515/1390715 ...

  5. Exchange 2010 RPC配置静态RPC端口客户端访问、通讯簿服务和公用文件夹连接

    Exchange 2010 RPC客户端访问.通讯簿服务和公用文件夹连接配置静态RPC端口 很多企业的邮件服务器都采用了微软的Exchange,而Exchange的客户端访问服务通过动态RPC端口来实 ...

  6. 转载 WebService 的CXF框架 WS方式Spring开发

    WebService 的CXF框架 WS方式Spring开发 1.建项目,导包. 1 <project xmlns="http://maven.apache.org/POM/4.0.0 ...

  7. Exchange Server 2007客户端访问协议部署SSL

    安全套接字层是用来加密客户端和服务器之间通讯的一种方法.Microsoft Exchange Server 2007 能够为所有的客户端访问协议部署SSL.这些协议包括Microsoft Exchan ...

  8. 解决方案:外域HDFS客户端访问内网HDFS datanode

    外域HDFS客户端访问内网HDFS datanode 客户端机器报错 外域机器通信需要用外网ip,未配置hostname访问会访问异常,namenode return hosts to hadoop ...

  9. 管理Exchange 2003客户端访问

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yejunsheng.blog.51cto.com/793131/162241 我 ...

最新文章

  1. 普通帧,关键帧,空白关键帧的区别
  2. pair的常见用法详解
  3. MSDE 1433端口
  4. .net core项目实战之开发环境搭建
  5. 计算机用户域怎么删除,如何查找并删除AD域中多余的计算机帐号?
  6. 新版本springboot-整合mybatis
  7. 由于html元素加载导致的问题
  8. [Unity3D]unity3d5.0简单的调用摄像头
  9. hikari数据源配置类_spring-boot2项目默认hikari数据源的配置
  10. 【Python爬虫学习笔记3】requests库
  11. linux for循环套for循环格式_4.20 for循环 break、continue关键字
  12. 回顾Gartner 报告:2010年至2017年那些最酷的存储初创公司去哪儿了
  13. 逆向动态调试之Ollydbg的使用
  14. 百度经纬度和google经纬度互转
  15. Java实现 蓝桥杯 算法提高 天天向上(DP)
  16. 如何降低疾病监测的漏诊比率?一种新的分类学习算法
  17. oppo便签误删怎么办_OPPO手机便签删除了怎么恢复?有无需登录云端就可以恢复的备忘录软件吗...
  18. 腾讯云乐固客户端加固打包上线流程
  19. 高铁车次号为什么会改变?
  20. 英语写计算机作文600字,介绍电脑 computer 英语作文

热门文章

  1. 使用分支限界法解决单源最短路径问题。
  2. windows调试器设置
  3. 反病毒引擎设计全解(四)
  4. 【C/C++多线程编程之三】创建pthread线程
  5. JVM_03 运行时数据区 [ 虚拟机栈 ]
  6. C语言再学习 -- 标识符
  7. 1040 Longest Symmetric String
  8. 微信系列研究之-----资源文件保护的小把戏
  9. JZOJ 1322. 硬币游戏
  10. mysql读写分离有用吗_MySQL的使用中实现读写分离的教程