zoukankan      html  css  js  c++  java
  • Apache cxf暴露接口以及客户端调用之WebService初步理解

    在我们真实的项目中,经常会调用别人提供给我们的接口,或者在自己的团队中,

    restful风格的前后端分离也经常会提供一个后端接口暴露出去供app,或者.net/C/C++程序员去调用,此时就需要使用到一个工具或者一套程序来调用暴露的接口。

    而今天我要说的就是其中的一个方式,使用apache的cxf调用以及暴露接口,让我们直接开始代码

    1、首先我们需要去下载cxf,cxf是apache的一个产品,下载链接附上:http://www.apache.org/dyn/closer.lua/cxf/3.2.5/apache-cxf-3.2.5.zip

    建议大家下载这个

    下载完成之后解压放在一个目录下,需要去环境变量的path路径下配置一下,这里请看图解:

    (这个是下载解压好的cxf,版本是3.2.5)

    环境变量配置:

    新建一个CXF_HOME的环境变量,指向你的CXF解压后存放的路径

    然后在path中添加这个bin

    此时在cmd命令中输入wsdl2java -help,可以看到输出下面这些内容,此时你已经配置好了cxf

    打开idea,我们可以开始编写代码了

    2、idea中配置cxf

    一次打开File--settings--左侧输入cxf--选择Tools下面的WebServices

    如图的cxf配置即可。

    3、新建项目就不介绍了,直接开始写一个要暴露的接口:

    package com.cxfdemo.hello;
    
    import javax.jws.WebService;
    
    @WebService
    public interface MyWebService {
        int add(int a, int b);
        int minus(int a, int b);
    }
    

      写这个接口的实现类

     1 package com.cxfdemo.hello;
     2 
     3 import javax.jws.WebService;
     4 
     5 @WebService(endpointInterface = "com.cxfdemo.hello.MyWebService")
     6 public class MyWebServiceImpl implements  MyWebService{
     7     @Override public int add(int a, int b) {
     8         System.out.println(a+"+"+b+"="+(a+b)); return a+b;
     9     }
    10     @Override public int minus(int a, int b) {
    11         System.out.println(a + "-" + b + "=" + (a - b));
    12         return a - b;
    13     }
    14 }

    这时候可以写一个暴露的Server端: 

    package com.cxfdemo.hello;
    
    
    import javax.xml.ws.Endpoint;
    
    public class MyServer {
        public static void main(String[] args) {
            String address = "http://localhost:8888/ms";
            Endpoint.publish(address,new MyWebServiceImpl());
        }
    }
    

      Client测试端:

     1 package com.cxfdemo.hello;
     2 
     3 import javax.xml.namespace.QName;
     4 import javax.xml.ws.Service;
     5 import java.net.MalformedURLException;
     6 import java.net.URL;
     7 
     8 public class MyClient {
     9     public static void main(String args[]) {
    10         try { URL url = new URL("http://localhost:8888/ms?wsdl");
    11             //命名空间 及 名称
    12             QName qName = new QName("http://hello.cxfdemo.com/","MyWebServiceImplService");
    13             Service service = Service.create(url, qName); MyWebService myWebservice = service.getPort(MyWebService.class);
    14             System.out.println(myWebservice.add(2, 3)); System.out.println(myWebservice.minus(2, 3));
    15         } catch (MalformedURLException e) {
    16             e.printStackTrace();
    17         }
    18     }
    19 }

    这个时候我们就可以启动项目了,首先运行启动MyServer,项目启动成功后,我们可以通过这个链接访问:http://localhost:8888/ms?wsdl

    此时可以看到暴露的接口的内容:

      此时即暴露接口成功,我们再来启动Client测试端:

    看到控制台输出:

     此时你就可以开始写一个基于WebService的暴露接收demo了

  • 相关阅读:
    ESB相关技术入门
    推荐两个界面原型设计工具GUIDesignStudio 和 Mockups For Desktop
    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
    各大网站架构总结笔记
    NUnit是一款优秀的开源回归测试框架
    2011 年最佳代码
    [转]WinForms UI Thread Invokes: An InDepth Review of Invoke/BeginInvoke/InvokeRequred
    ISAPI_Rewrite引起的IIS应用程序池崩溃(fatal communication error)
    微软一站式示例代码库(中文版)20110808版本, 新添加ASP.NET, Azure, Silverlight, WinForm等15个Sample
    Office系列在线预览
  • 原文地址:https://www.cnblogs.com/javallh/p/9293162.html
Copyright © 2011-2022 走看看