【WebService】使用cxf发布及调用web service

什么是 CXF?

CXF 是目前最主流 WebService 开发框架 ,由 Apache 提供。

CXF WebService 开发,主要分为两种服务提供方式 WS 、RS

  • JAX-WS 传输数据,就是 XML 格式,基于 SOAP 协议
  • JAX-RS 传输数据,传输 XML 格式或者 JSON 格式,基于 HTTP 协议

JAX-WS独立服务使用

1、 建立 maven java 项目

2、 在项目中导入 CXF jar 包支持

    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.0.1</version>
        </dependency>
    </dependencies>

使用 maven 坐标,要提供 jaxws 服务,引入 jaxws 的 jar 包 , 要提供 jaxrs 服务,引入 jaxrs 的 jar 包。

注意:版本号必须写,且为3.0.0及以后的版本

3、 编写服务端程序

编写实体类

public class User {
    private Integer id;
    private String userName;
    private String city;
    // 省略getter、setter
}

编写服务

@WebService 使用类上面,标记类是 WebService 服务提供对象

@WebMethod 使用方法上面,标记方法 是 WebService 服务提供方法

@WebService
public interface IUserService {

    @WebMethod
    String sayHello(String name);
}

public class UserServiceImpl implements IUserService {

    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

将 服务方法发布到网络上,给其它系统调用

public class ServerApplication {
    public static void main(String[] args) {
        JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
        //发布的地址和服务名
        jaxWsServerFactoryBean.setAddress("http://localhost:9999/userService");
        jaxWsServerFactoryBean.setServiceClass(UserServiceImpl.class);
        Server server = jaxWsServerFactoryBean.create();
        server.start();
        System.out.println(">>>>>>>>开始服务>>>>>>>>");
    }
}

4、 编写客户端操作

生成桩

创建一个目录(可以随便)来保存生成class文件,利用如下命令

wsimport -s . -p com.example.server http://localhost:9999/userService?wsdl

打jar包,导jar包(这一步可以省略)

把目录下的一堆class文件打成jar包,打开命令行,进入上面创建的目录下,执行如下命令

jar cvf cxf-m-server.jar *

其中,文件名可以随意取。

在maven项目中,创建一个和src同级的目录叫lib,把jar包拷贝到lib中,然后右键(以idea为例)选在Add as Library

如果不打成jar包,就像  https://blog.csdn.net/xiaoxiao_su123/article/details/110872112 那样处理即可。

编写客户端

public class ClientApplication {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
        // 只有导入jar包,才能引入这个类
        jaxWsProxyFactoryBean.setServiceClass(IUserService.class);
        jaxWsProxyFactoryBean.setAddress("http://localhost:9999/userService?wsdl");
        IUserService userService = (IUserService) jaxWsProxyFactoryBean.create();
        String result = userService.sayHello("李四");
        System.out.println(result);
    }
}

参考文章

https://baijiahao.baidu.com/s?id=1634936856075892795&wfr=spider&for=pc

猜你喜欢

转载自blog.csdn.net/xiaoxiao_su123/article/details/111370776