webservice快速入门


webservice解决的问题

解决不同系统、不同平台、不同语言之间的通信访问和调用
解决应用程序的集成,不同业务的整合

webservice的定义

Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不
同平台的应用服务可以互操作。
表面上看WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用
的方法API,能用编程的方法通过Web调用来实现某个功能的应用程序。
深层次上看WebService是一种新的Web应用程序分支,它们是自包含、自描述模块化
的应用,可以在网络中被描述、发布、查找以及通过Web来调用。

webservice运行与访问过程

  • 点餐例子

webservice核心组件

  • XML和HTTP
  • SOAP: 简单对象访问协议
  • WSDL: websevice描述语言
  • UDDI: 统一描述、发现和集成协议

小结: web服务就是做异构系统间的访问和互调

webservice主流框架简介

webservice不是局限于一种技术,更多是一种理念
Axis1/Axis2,XFire,CXF是为实现这一理念的落地技术框架

AXIS

Axis (Apache extensible Interaction System)阿帕奇可扩展交互系统
是一款开源的WebService运行引擎,本质上就是一个sOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。
Axis分为1.x系列和2系列,两个系列体系结构和使用上有较大的区别,相对而言,Axis1.x更加稳定,文档也比较齐全。
官网: http://axis.apache.org/

XFire

XFire是下一代的javaSOAP框架。XFire提供了非常方便的API,使用这些API可以开发面向服务(SOA)的程序。它支持各种标准,性能优良(基于低内存的STAX模型)。
官网: http://xfire.codehaus.org/

CXF

Apache CXF = Celtix+XFire

Apache CXF的前身叫Apache CeltXfire,现在已经正式更名为Apache CXF了,以下简称为CXF。CXF继承了Celtix和
XFire两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Transport以及各种Format的的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者WSDL优先(WSDL First)来轻松地实现Web Service的发布和使用。Apache CXF已经是一个正式的Apache顶级项目。
官网: http://cxf.apache.org/

helloworld

  1. 到CXF官网下载依赖包
  2. eclipse创建web工程
  3. CXF依赖包导入工程
  4. 创建helloworld服务接口(@WebService注解添加)
package com.chenxinshinian;

import javax.jws.WebService;

@WebService
public interface HelloWorld {

    public String sayHello(String name, int age);
}
  1. 创建helloworld服务实现类
package com.chenxinshinian;

public class HelloWorldImpl implements HelloWorld{

    @Override
    public String sayHello(String name, int age) {
        return "cxf hello :" + name + " " + age;
    }
    }
  1. 创建MainServer服务启动类(JaxWsServerFactoryBean)
package com.chenxinshinian;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class MainServer {

    public static void main(String[] args) {
        JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();

        jaxWsServerFactoryBean.setAddress("http://127.0.0.1:9999/cxf_server");
        jaxWsServerFactoryBean.setServiceClass(HelloWorldImpl.class);

        Server server = jaxWsServerFactoryBean.create();

        server.start();
    }
}
  1. 测试
    直接通过浏览器访问或者soapui测试
  1. 客户端调用
package com.chenxinshinian;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class ClientTest {

    public static void main(String[] args) {
        JaxWsProxyFactoryBean jaxWsServerFactoryBean = new JaxWsProxyFactoryBean();

        jaxWsServerFactoryBean.setAddress("http://127.0.0.1:9999/cxf_server");
        jaxWsServerFactoryBean.setServiceClass(HelloWorld.class);

        HelloWorld helloWorld = (HelloWorld)jaxWsServerFactoryBean.create();

        String result = helloWorld.sayHello("chenxinshinian", 23);

        System.out.println("********"+result);// ********cxf hello :chenxinshinian 23
    }
}

文章作者: 拾年
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 拾年 !
评论
 本篇
webservice快速入门 webservice快速入门
webservice解决的问题解决不同系统、不同平台、不同语言之间的通信访问和调用解决应用程序的集成,不同业务的整合 webservice的定义Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服
2020-08-26
下一篇 
阿里开发流程 阿里开发流程
哈喽大家好,我们今天来讲讲bat魔鬼变态的开发流程,这是夸张的说法啊,其实这是最正规高效的开发流程,很多没毕业的大学生,或者以后想进大厂工作的小伙伴,可以听一下大厂的开发流程是什么样子的。也许很多中小公司也在采用这套开发流程。 PM:产
2020-07-12
  目录