cxf学习笔记一:了解webservice的基本理论与创建服务端与客户端

来源:互联网 发布:虚拟机ubuntu nat上网 编辑:程序博客网 时间:2024/05/16 10:37

声明:文章是根据疯狂java视频学习;

一:web service 基本理论  

  解决不同平台,不同语言编写应用之间的相互调用;

  解决远程的调用;

 实际中的应用---》》》

 公司的新旧系统的整合;不同公司之间的业务往来等等;

二:cxf框架

   cxf 是由xfire(web service框架)和celtrix(esb框架-)组成

   其中ESB 是---》》 SOA面向服务的架构---》》所有service服务(组件)---即插即用;

IBM 提倡的SOA架构  希望 --》以组装电脑的方式来开发软件;;

1:各种提供服务的组件,(web  service;

2:企业服务总线(Enterprise Service Bus  --------Esb)

三:准备

  jdk--》1.7本人的

  下载 apache-cxf-2.4.1 --》http://download.csdn.net/download/brianyeye/4375373

  解压---》》

   解压后的文件夹说明;---》Docs文件下是qpi文档;

  配置本机的环境变量,只需要配置path即可;加入--》解压地址\apache-cxf-2.4.1\bin;

  黑窗口运行--wsdl2java

 

 说明配置成功--

四:建立服务端--》新建java项目 

 

  导入jar :apache-cxf-2.4.1\lib下

  

   ws包下是接口与实现类;----》》

@WebService//java提供 javax.jws.WebService;
public interface HelloWord {
  public String sayHi(String name);
}

//实现类

实现上面的接口同样@webservice ;endpointInterface=“指定实现接口的路径”

 serviceName=“起个名字可以和类名相同”; 还有其他属性参照java-ee API 文档;

@WebService(endpointInterface="com.ws.HelloWord",
        serviceName="HelloWordImpl")
public class HelloWordImpl implements HelloWord {
    public String sayHi(String name) {
        // TODO Auto-generated method stub
        return name+"good"+"time--:"+new Date();
    }
}

fb包下--》

public class ServiceTest {
    //使用Endpoint的publish方法发布服务;
//    Endpoint.publish("服务地址(就是Ip)","服务的提供者 就是webservice的对象");
    public static void main(String[] args) {
        HelloWord hw= new HelloWordImpl();
        Endpoint.publish("http://本机ip/test",hw);//test是服务的名字随便起;
        System.out.println("good nice");
    }
}

 运行---》 tomcat访问http://本机ip/test?wsdl

说明成功;

其中wsdl --》web webservice  definition language  webservice 的描述:描述这个服务有哪些方法可以被调用;任何语言实现web service 都需要提供并 暴露wdsl文档;

五:--建立客户端--cxfwsclient

src下无任何文件---》小黑窗进入工作空间cxfwsclient的src下运行

wsdl2java  http://本机ip/test?wsdl 注意服务端必须在启动--》cxfwsclient的src会生成以下


建立TestClient

    public static void main(String[] args) {
        //该类的实例当成工厂来使用;
        HelloWordImpl factory = new HelloWordImpl();
        //这个HelloWord 是客户端的 但是和服务端有相同的方法;
        // 返回的只是远程的web service的代理
        HelloWord hw = factory.getHelloWordImplPort();
        String sayHi = hw.sayHi("孙悟空");
        System.out.println(sayHi);
    }

调用成功--》









0 0