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了

原文地址:https://www.cnblogs.com/javallh/p/9293162.html

时间: 2024-11-07 14:44:26

Apache cxf暴露接口以及客户端调用之WebService初步理解的相关文章

Axis实现 web service接口开发 + 客户端调用

看到网上挺多人找webservice axis开发案例,但是网上较多的都是有点乱,初学者不太容易看得懂,所以最近看到自己终于有了点空闲时间,就上传了一份比较简单的webservice axis的完整案例. 只适用于初学者. 一.新建一个web项目 导入lib包. 2.配置 web.xml <!-- axis 配置 -->   <servlet>         <display-name>Apache-Axis Servlet</display-name>

Axis2实现 web service接口开发 + 客户端调用

一. 新建一个web项目, 1.打开axis2.war包,将conf,lib,modules三个文件夹复制到项目的WEB-INF文件夹下,再在WEB-INF目录下新建一个services文件夹,然后在services文件下新建一个文件夹(任意取名): 再新建META-INF文件夹,最后再新增services.xml,接口信息就写在这里面. 具体路径:WEB-INF/services/myservice/META-INF/services.xml 2.配置 web.xml .加载axis2 和 a

客户端调用Xfire WebService(含JavaScript)

一 .通过Web服务端提供的接口来创建客户端 /** * 通过Web服务端提供的接口来创建客户端 * @see 客户端必须提供一个与服务端完全一致的接口,包名也要一致 * @see 并且此时需要在项目中引入XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries */ public class PortClient { public static void main(String args []){ //首先使用XFire的ObjectSe

【Apache CXF】CXF对JAX-WS的支持

相关dependency,我使用的版本是2.7.11: <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org

WebService—CXF整合Spring实现接口发布和调用过程2

一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.18</version> </dependency> <de

WebService—CXF整合Spring实现接口发布和调用过程

一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.18</version> </dependency> <de

使用Apache CXF开发WebServices服务端、客户端

在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = Celtix + XFire. CXF 继承了 Celtix 和 XFire 两大开源项目的精华, 提供了对 JAX-WS 全面的支持,并且提供了多种 Binding .DataBinding.Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code Fi

webservice -- cxf客户端调用axis2服务端

背景: 有个项目, 需要由第三方提供用户信息, 实现用户同步操作, 对方给提供webservice接口(axis2实现)并也使用axis2作主客户端调用我方提供的webservice接口 起初, 由于项目使用了spring, 且spring可与cxf较好的集成, 所以也就选用了cxf, 可问题随之出现, 接口可以调用到, 接口的具体方法也可以调用到, 但是, 1. cxf作为客户端, 获取服务端返回值时均为null. 2. cxf作为服务端, 获取axis2客户端传来的参数时, 也均为null.

webservice发布服务:CXF及客户端调用

2.CXF:(与spring整合) CXF相对来说操作没有AXIS繁琐 1.导入spring的jar包和cxf的jar包 2.在spring的核心配置文件中配置发布的接口类 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.o