`

Springboot项目(整合WebService带协议头验证+WebSocket+Web+动态日志输出)

阅读更多

环境配置:

      springboot 1.5.14.RELEASE  ,JDK1.8 

项目目录结构:
        无法上传
核心方法:

       接口调用方法

/**
 * 数据上报
 * @param config
 * @param datas
 * @return
 * @throws Exception
 */
public String report(ReportConfigVo config,byte [] datas) {
    String ret = null;
    try {
        if (null != config && !BlankUtil.isBlank(datas)) {
            // 创建动态客户端
            JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
            //http://192.168.1.75:8091/service/transfer?wsdl
            Client client = dcf.createClient(config.getUpUrl());
            // 需要密码的情况需要加上用户名和密码
            client.getOutInterceptors().add(new HeaderIntercepter(config.getDataCenterCode(), config.getValidatePwd()));
            // invoke("方法名",参数1,参数2,参数3....); 为接口中定义的方法名称 ,传递的参数,返回一个Object数组
            Object[] objects = client.invoke("transfer", datas);
            ret = objects[0].toString();
            log.info("返回结果:" + ret);
        }
    }catch (ServiceConstructionException e){
        log.error("接口服务器连接异常!["+e.getMessage()+"]");
    }catch (Exception er){
        log.error("数据上报异常!["+er.getMessage()+"]");
    }
    return ret;
}

   拦截器类:

    HeaderIntercepter.java  

import com.xxxxxx.report.security.MD5Util;
import com.xxxxxx.report.utlis.Constant;
import org.apache.cxf.binding.soap.SoapHeader;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.ws.handler.MessageContext;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;


/**
 * 自定义的soap拦截器-用来添加header信息
 * Created by bluelotus on 2017/8/16.
 */
public class HeaderIntercepter extends AbstractSoapInterceptor {

    private String qname;

    private String username ;

    private String password ;


    public HeaderIntercepter() {
        super(Phase.WRITE);
    }

    public HeaderIntercepter(String userName,String password) {
        super(Phase.WRITE);
        this.username = userName;
        this.password = password;
    }

 
    public void handleMessage(SoapMessage soapMessage) throws Fault {
        Document doc=DOMUtils.createDocument();
        // 根节点
        Element rootEle=doc.createElementNS("", "AuthToken");
        // 用户ID
        Element userEle = doc.createElement("username");
        userEle.setTextContent(this.username);
        rootEle.appendChild(userEle);
        // 密码
        Element passEle = doc.createElement("password");
        passEle.setTextContent(MD5Util.md5(this.password));
        rootEle.appendChild(passEle);
        // 添加到头
        List<Header> headers = soapMessage.getHeaders();
        QName qname=new QName("AuthToken");
        SoapHeader head=new SoapHeader(qname, rootEle);
        headers.add(head);
    }


    private Object getHeader() {
        QName qName = new QName("", "", "");
        Document document = DOMUtils.createDocument();
        Element element = document.createElementNS(qname, "RequestSOAPHeader");
        Element token = document.createElement("token");
        token.setTextContent("kkkkk");
        // element.appendChild(token);
        SoapHeader header = new SoapHeader(qName, token);
        return (header);
    }

    public String getQname() {
        return qname;
    }

    public void setQname(String qname) {
        this.qname = qname;
    }
}

   

配置类:

  

/**
 * 配置信息
 * Created by bluelotus on 2017/8/9.
 */
public class ReportConfigVo extends ReportConfig{
 
}

 

/**
 * 上报配置信息
 * Created by bluelotus on 2017/8/9.
 */
public class ReportConfig {
  
    //数据中心编码
    private String dataCenterCode;
    //上报接口网址
    private String upUrl;
    //压缩包密码
    private String compressPwd;
    //验证密码
    private String validatePwd;

}

   

    MD5加密类:

  /**

 * Created by Administrator on 2017/6/28.
 */
public class MD5Util {

    private static final String encryModel="MD5";
    /**
     * 32λmd5.
     * 32位小写md5加密
     * @param str
     * @return
     */
    public  static String md5(String str) {
        return encrypt(encryModel, str);
    }

    public static String encrypt(String algorithm, String str) {
        try {
            MessageDigest md = MessageDigest.getInstance(algorithm);
            md.update(str.getBytes());
            StringBuffer sb = new StringBuffer();
            byte[] bytes = md.digest();
            for (int i = 0; i < bytes.length; i++) {
                int b = bytes[i] & 0xFF;
                if (b < 0x10) {
                    sb.append('0');
                }
                sb.append(Integer.toHexString(b));
            }
            return sb.toString();
        } catch (Exception e) {
            return "";
        }
    }
}

分享到:
评论

相关推荐

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验 本实验的主要目标是使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验。下面是实验的详细介绍: 标题...

    springBoot完整整合WebService框架CXF示例

    SpringBoot与CXF整合是构建基于Web服务的应用程序的一个常见实践。CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序,它支持SOAP和RESTful服务。SpringBoot则简化了Spring应用的初始化和配置,...

    springboot整合CXF发布webservice和客户端调用

    SpringBoot整合CXF是将流行的Java Web服务框架CXF与SpringBoot轻量级框架结合,以便更方便地创建和消费Web服务。这个项目提供了一个很好的示例,通过详细注释帮助开发者理解如何在SpringBoot应用中发布和调用Web服务...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    在IT行业中,Web Service是一种基于XML的通信标准,允许不同系统之间进行互操作性交互。Spring Boot是一个流行的Java框架,用于简化Spring应用的创建和管理。本教程将讲解如何使用Spring Boot集成Apache CXF(一个...

    springboot动态调用webservice接口

    最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!

    springboot+webservice搭建webservice服务端

    这两个库支持SOAP协议,是创建Web Service的常用工具。 ### 二、搭建Web Service服务端 1. **添加依赖**:首先,在`pom.xml`文件中引入Spring Boot的Starter Web和Apache CXF依赖: ```xml &lt;groupId&gt;org.spring...

    SpringBoot开发WebService之Axis示例

    通过整合SpringBoot与Axis,我们可以快速构建高效且易于维护的Web服务。 首先,让我们了解什么是SpringBoot。SpringBoot是Spring框架的扩展,旨在简化Spring应用的初始搭建以及开发过程。它提供了开箱即用的设置,...

    发布webService服务接口与spring整合教程

    在IT行业中,Web Service是一种基于标准协议(如SOAP、RESTful等)的接口,使得不同系统之间能够通过网络进行通信和数据交换。本教程将详细讲解如何将Web Service服务接口与Spring框架进行整合,以便在实际开发中...

    ssm+easyui+websocket+shiro验证+webservice

    搭的一个ssm框架,连接的是mysql,把doc里面的sql执行后可以直接运行。项目里面配置了easyui,weiservice,websocket,shiro验证,拦截器,定时器等等(用户名:admin或1,密码:admin或1)

    springboot整合webservice采用CXF技术

    在IT行业中,Spring Boot是一个备受推崇的框架,它简化了Spring应用的开发过程,而Web服务(WebService)则是一种常见的应用程序接口(API)交互方式。本文将深入探讨如何使用Apache CXF库在Spring Boot项目中集成和...

    springboot2.0webService学习

    springboot2.0webService学习 

    springboot-webservice-开发文档及原代码.rar

    这个附件里面包括一个完整的springboot 整合webservice的源代码,客户端和服务端运行起来是可以跑通的,并且附件里面放了两个说明文档,是如何通过idea来创建webservice的说明文档。希望对您有帮助。

    spring+xfire( 编写webservice完整配置+案例)

    总之,Spring与XFire的结合提供了一种简洁、灵活的方式来创建和管理Web服务,使得开发者可以专注于业务逻辑,而不是底层的协议细节。虽然现在Spring社区更倾向于使用Spring-WS或其他现代的Web服务框架,如Apache CXF...

    SpringBoot第 4 讲:SpringBoot+Rest+拦截器

    在本教程中,我们将深入探讨如何使用SpringBoot构建RESTful Web服务,并结合拦截器实现更高效、可控的服务。首先,让我们理解REST(Representational State Transfer)的核心概念,它是一种架构风格,用于设计网络...

    java期末大作业课程设计基于springboot+axis的医院挂号预约系统源码+数据库.zip

    客户端用springboot实现,服务端用webService+axis+mybatis实现 java期末大作业课程设计基于springboot的医院挂号预约系统源码+数据库。 软件架构说明 服务端:WebService+axis+mybatis 服务端开发环境:jdk8,...

    源码-springboot+cxf实现webservice服务端

    ### 源码分析:Spring Boot + CXF 实现WebService服务端 #### 一、概述 随着企业级应用之间的交互需求日益增长,跨平台、跨语言的服务调用变得尤为重要。WebService作为一种成熟且广泛采用的技术标准,能够很好地...

    SpringBoot WebService cxf接口发布以及logbok日志集成

    为了在SpringBoot中集成logback,我们需要在项目的资源目录下创建一个名为`logback.xml`的配置文件,定义日志级别、输出格式、目标位置等参数。此外,我们还可以利用SpringBoot的条件化配置,根据环境变量或应用属性...

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    而Apache CXF则是一个强大的Web服务框架,用于创建和消费Web服务。本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入...

    SpringBoot集成webService

    本文将详细介绍如何在SpringBoot项目中集成Web Service,实现一个简单的实例。 首先,我们需要在SpringBoot项目中引入必要的依赖。SpringBoot并没有直接提供对Web Service的支持,但我们可以借助Apache CXF库来实现...

    springboot-cxf-webservice

    SpringBoot与CXF WebService整合教程 在Java世界中,SpringBoot以其简洁的配置和快速的应用开发能力,已经成为主流的微服务框架。而CXF作为一款强大的SOAP和RESTful Web服务框架,使得开发者能够轻松地创建和消费...

Global site tag (gtag.js) - Google Analytics