文档章节

Webservice介绍,CXF入门程序

烤猪佩奇
 烤猪佩奇
发布于 2016/02/29 17:21
字数 1110
阅读 7
收藏 0

一. 什么是WedService?

WebService不是框架, 甚至不是一种技术, 而是一种跨平台,跨语言的规范, WebService的出现是为了解决这样的需求场景: 不同平台, 不同语言所编写的应用之间相互调用.


二. WedService有什么用?

WebService可以集中解决以下问题:

1. 远程调用

2. 跨平台调用

3. 跨系统调用


那么WebService在企业中有什么用呢?

1. 同一个公司新旧系统的整合.
2. 不同公司的业务整合: 业务的整合就要带来不同公司的系统整合, 而不同公司的系统可能存在平台不同, 语言不同的问题.
3. 内容聚合: 一个应用需要提供天气预报, 股票行情,黄金行情等, 内容聚合的应用需要调用大量不同平台, 不同语言编写的应用的方法.


三. 面向服务架构(SOA)

1. 什么是面向服务架构: service1, service2, service3 - 所有组件都是"即插即用"的.
   IBM提倡的SOA架构: 希望以"组装电脑"的方式来开发软件
   ① 各种提供服务的组件
   ② 企业服务总线(Enterpise Service Bus - ESB)
2. CXF号称是SOA框架


四. WebService三大技术基础

1. WSDL: web service definition language - web service定义语言

   - 通俗地说, WSDL文档描述了Web Service如下三个方面:
   - WHAT: 该Web Service 包含什么操作
   - HOW: 该Web Service的操纵应该怎样调用
   - WHERE: 该Web Service的服务地址


2. SOAP: Simple Object Access Protocol: 简单对象访问协议

    一次web service的调用, 其实并不是方法调用, 而是发送SOAP消息(即xml文档片段)


3. UDDI: Universal Description, Discovery and Integration

    UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索


※ 调用一次Web Service的本质:
1. 客户端把调用方法参数, 转换成XML文档片段(SOAP消息 - input消息) - 该文档片段必须符合WSDL定义的格式
2. 通过网络, 把xml文档片段传给服务器
3. 服务器接收到xml文档片段
4. 服务器解析XML文档片段, 提取其中的数据, 并把数据转换调用Web Service所需要的参数值
5. 服务器端执行方法
6. 把执行方法得到的返回值, 再次转换为生成为XML文档片段(SOAP消息 - output消息)- 该文档片段必须符合WSDL定义的格式
7. 通过网络, 把xml文档片段传给客户端
8. 客户端接受到xml文档片段
9. 客户端解析xml文档片段, 提取其中的数据, 并把数据转换调用Web Service的返回值
从上面调用本质来看, 要一个语言支持web service唯一的要求是: 该语言支持xml文档的解析, 生成, 支持网络传输


五. 使用CXF开发WebService程序

1. 环境准备:

① 下载Apache cxf2.2.10环境: http://download.csdn.net/detail/zdp072/7429645

② 所需Jar包: 

    cxf-2.2.10.jar

    geronimo-servlet_2.5_spec-1.2.jar

    jetty-6.1.21.jar

    jetty-util-6.1.21.jar

    wsdl4j-1.6.2.jar

    XmlSchema-1.4.5.jar


③ 配置path环境变量: G:\Java_lib\apache\cxf\apache-cxf-2.2.10\bin (cxf的解压目录)

    命令行输入: wsdl2java查看是否配置成功


2. 开发服务端:

① 开发一个Web Service业务接口, 该接口要用@WebService修饰

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. @WebService   
  2. public interface HelloService {  
  3.     public String sayHello(String name);  
  4. }  

② 开发一个Web Service实现类, 实现类也需要用@WebService修饰

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. @WebService (endpointInterface="com.zdp.service.HelloService")  
  2. public class HelloServiceImpl implements HelloService {  
  3.     @Override  
  4.     public String sayHello(String name) {  
  5.         return name + ", 您好! 现在的时间是: " + new Date();  
  6.     }  
  7. }  

③ 使用Endpoint类的静态方法发布WebService 

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class MyServer {  
  2.     public static void main(String[] args) {  
  3.         HelloService helloService = new HelloServiceImpl();  
  4.         Endpoint.publish("http://localhost/sayHello", helloService);  
  5.         System.out.println("Web Service 暴露成功");  
  6.     }  
  7. }  

注: 每个Web Service组件需要2个部分: 接口和实现类


④ 运行MyServer(CXF内置了一个Jetty Web服务器), 在浏览器中输入以下地址: http://localhost/sayHello?wsdl , 如果WebService暴露成功将会在浏览器里看到一个xml文件


3. 开发客户端

① 打开命令行, cd进入客户端的src目录, 运行: wsdl2java http://localhost/sayHello?wsdl , 目的就是通过暴露的wsdl生成Java类

② 写一个客户端测试类:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class MyClient {  
  2.     public static void main(String[] args) {  
  3.         HelloServiceImplService factory = new HelloServiceImplService();  
  4.         HelloService helloService = factory.getHelloServiceImplPort(); // 返回一个代理  
  5.         System.out.println(helloService.sayHello("zhangsan"));  
  6.     }  
  7. }  

③ 代码结构图及下载地址: http://download.csdn.net/detail/zdp072/7429637

本文转载自:http://blog.csdn.net/cjaver/article/details/38777057

共有 人打赏支持
烤猪佩奇
粉丝 18
博文 46
码字总数 6583
作品 0
广州
高级程序员
bboss发布apache cxf 2.7.6服务和定义客户端服务实例可能产生冲突解决办法

bboss发布apache cxf 2.7.6服务和定义客户端服务实例放到一起可能会产生冲突并导致服务发布失败,本文介绍这个冲突的解决办法。 首先介绍一下冲突现象,假设在bboss mvc的xml配置文件中定义一...

bboss
2014/03/22
0
0
CXF创建webservice客户端和服务端

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。 作者:永恒の☆ 地址:http://blog.csdn.net/chenghui0317/article/details/9...

kt431128
2014/10/03
0
0
使用cxf发布webservice总结

一、概念 1、什么是webservice Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分...

漂泊者及其影子
2014/08/21
0
0
新手初识webservice-实践篇

理论背景:《新手初识webservice-理论篇》http://my.oschina.net/achi/blog/52766 编程语言:Java 必要技能:JavaWeb,MVC,Spring IOC 情景假设:你刚用Java做了个网上店铺,用了servlet,MVC...

路飞
2012/04/12
0
5
spring+restful service

Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的。关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述...

游宵
2014/04/25
0
1

没有更多内容

加载失败,请刷新页面

加载更多

学习设计模式——单例模式

1. 认识单例模式 1. 定义:一个类中仅有一个实例,并提供一个访问它的全局访问点。 2. 结构:仅一个Singleton类,其中包含一个static类变量,而类变量的类型就是Singleton类,而且Singleton...

江左煤郎
7分钟前
0
0
前端安全系列之二:如何防止CSRF攻击?

背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常...

talen
8分钟前
0
0
Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图)

Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图) 最近进行数据库操作,遇到一个问题,就是大量删除一个数据表中的数据后,由于设定了id是自增的,导致再插入时,默认生成的...

原创小博客
9分钟前
0
0
Springboot + mongoDB : So easy

1. dependancy compile('org.springframework.boot:spring-boot-starter-data-mongodb') 2. config # mongodbspring.data.mongodb.host=***.mongodb.rds.aliyuncs.comspring.data.mongod......

园领T
21分钟前
1
0
centos 7( linux )下安装elasticsearch教程

目录 概述 环境准备 elaticsearch简介 安装elasticsearch 彩蛋 概述 很久没有写博客了,最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。...

java_龙
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部