栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring5.x cxf3.4.x 服务端和客户端 非maven版本

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring5.x cxf3.4.x 服务端和客户端 非maven版本

文章目录
          • 一、资料准备
            • 1. 官网链接
            • 2. 解压
            • 3. 依赖梳理
          • 二、spring集成cxf
            • 2.1.创建spring项目
            • 2.2. 创建接口
            • 2.3. impl
            • 2.4. spring-cxf.xml
            • 2.5. 客户端
            • 2.6. 开源项目

一、资料准备 1. 官网链接

http://cxf.apache.org/download.html

下载apache-cxf-3.4.5.zip

2. 解压

3. 依赖梳理
cd apache-cxf-3.4.5/lib

从bin目录下面,复制以下jar到一个单独的文件夹中

commons-logging-1.2.jar
cxf-core-3.4.5.jar
cxf-rt-bindings-soap-3.4.5.jar
cxf-rt-databinding-jaxb-3.4.5.jar
cxf-rt-frontend-jaxws-3.4.5.jar
cxf-rt-frontend-simple-3.4.5.jar
cxf-rt-transports-http-3.4.5.jar
cxf-rt-wsdl-3.4.5.jar
spring-aop-5.2.17.RELEASE.jar
spring-beans-5.2.17.RELEASE.jar
spring-context-5.2.17.RELEASE.jar
spring-core-5.2.17.RELEASE.jar
spring-expression-5.2.17.RELEASE.jar
spring-web-5.2.17.RELEASE.jar
stax2-api-4.2.1.jar
woodstox-core-6.2.6.jar
wsdl4j-1.6.3.jar
xmlschema-core-2.2.5.jar

二、spring集成cxf 2.1.创建spring项目


创建java和resources包路径

2.2. 创建接口

package com.gblfy.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService(targetNamespace = "http://impl.service.gblfy.com/")
public interface IUserService {

    @WebMethod
    public String getCxf(@WebParam(name = "reqXml") String reqXml);
}
2.3. impl
package com.gblfy.service.impl;

import com.gblfy.service.IUserService;

import javax.jws.WebService;

@WebService
public class UserServiceImpl implements IUserService {

    @Override
    public String getCxf(String reqXml) {

        System.out.println("接收到的报文:" + reqXml);
        return "OK";
    }
}

2.4. spring-cxf.xml



    
    

    
    


2.5. 客户端
package com.gblfy.service.client;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.springframework.stereotype.Component;

import javax.xml.namespace.QName;


@Component
public class CxfClient {
    public static void main(String[] args) throws Exception {

        //-------------------------------- cxf webservice 服务端信息----------------------------------------
        // cxf webservice 服务地址
        //格式:http://IP地址/项目名称/拦截url/请求地址?wsdl
        String cxfUrl = "http://127.0.0.1:8080/spring_cxf_war/cxf/userWS?wsdl";

        // cxf webservice 命名空间
        //获取方式:从wsdl中复制targetNamespace标签中的内容
        String targetNamespace = "http://impl.service.gblfy.com/";

        // cxf webservice 方法名
        //获取方式1:由服务商提供
        //获取方式2:从wsdl中复制operation标签中name对应的指定的内容
        String method = "getCxf";


        //-------------------------------- cxf webservice 客户端请求报文----------------------------------------
        // cxf 模拟请求报文(根据实际需求而定)
        String reqXml = "cxf请求报文";

        //--------------------------------调用服务客户端任选一种即可----------------------------------------

        //调用服务 客户端1
        CxfClient.sendCxfReqClientHandle(cxfUrl, method, reqXml);

        //调用服务 客户端2
        CxfClient.sendCxfReqClientHandle2(cxfUrl, targetNamespace, method, reqXml);


    }

    
    public static String sendCxfReqClientHandle(String cxfUrl, String method, Object... reqXml) throws Exception {
        String res = null;
        // 创建动态客户端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient(cxfUrl);

        // 需要密码的情况需要加上用户名和密码
        // client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
        Object[] objects = new Object[0];
        try {
            // 基本格式:invoke("方法名",参数1,参数2,参数3....);
            objects = client.invoke(method, reqXml);
            res = objects[0].toString();
            System.out.println("返回数据:" + res);
        } catch (java.lang.Exception e) {
            e.printStackTrace();
            throw e;
        }
        return res;
    }

    
    public static String sendCxfReqClientHandle2(String cxfUrl, String targetNamespace, String method, Object... reqXml) throws Exception {
        String res = null;
        // 创建动态客户端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        Client client = dcf.createClient(cxfUrl);

        // 需要密码的情况需要加上用户名和密码
        // client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
        Object[] objects = new Object[0];
        try {
            // 基本格式:invoke("方法名",参数1,参数2,参数3....);
            QName qName = new QName(targetNamespace, method);
            objects = client.invoke(qName, reqXml);
            res = objects[0].toString();
            System.out.println("返回数据:" + res);
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
        return res;
    }
}

2.6. 开源项目

https://gitee.com/gb_90/unified-access-center

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号