环境配置:
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与CXF整合是构建基于Web服务的应用程序的一个常见实践。CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序,它支持SOAP和RESTful服务。SpringBoot则简化了Spring应用的初始化和配置,...
SpringBoot整合CXF是将流行的Java Web服务框架CXF与SpringBoot轻量级框架结合,以便更方便地创建和消费Web服务。这个项目提供了一个很好的示例,通过详细注释帮助开发者理解如何在SpringBoot应用中发布和调用Web服务...
在IT行业中,Web Service是一种基于XML的通信标准,允许不同系统之间进行互操作性交互。Spring Boot是一个流行的Java框架,用于简化Spring应用的创建和管理。本教程将讲解如何使用Spring Boot集成Apache CXF(一个...
最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!
这两个库支持SOAP协议,是创建Web Service的常用工具。 ### 二、搭建Web Service服务端 1. **添加依赖**:首先,在`pom.xml`文件中引入Spring Boot的Starter Web和Apache CXF依赖: ```xml <groupId>org.spring...
通过整合SpringBoot与Axis,我们可以快速构建高效且易于维护的Web服务。 首先,让我们了解什么是SpringBoot。SpringBoot是Spring框架的扩展,旨在简化Spring应用的初始搭建以及开发过程。它提供了开箱即用的设置,...
在IT行业中,Web Service是一种基于标准协议(如SOAP、RESTful等)的接口,使得不同系统之间能够通过网络进行通信和数据交换。本教程将详细讲解如何将Web Service服务接口与Spring框架进行整合,以便在实际开发中...
搭的一个ssm框架,连接的是mysql,把doc里面的sql执行后可以直接运行。项目里面配置了easyui,weiservice,websocket,shiro验证,拦截器,定时器等等(用户名:admin或1,密码:admin或1)
在IT行业中,Spring Boot是一个备受推崇的框架,它简化了Spring应用的开发过程,而Web服务(WebService)则是一种常见的应用程序接口(API)交互方式。本文将深入探讨如何使用Apache CXF库在Spring Boot项目中集成和...
springboot2.0webService学习
这个附件里面包括一个完整的springboot 整合webservice的源代码,客户端和服务端运行起来是可以跑通的,并且附件里面放了两个说明文档,是如何通过idea来创建webservice的说明文档。希望对您有帮助。
总之,Spring与XFire的结合提供了一种简洁、灵活的方式来创建和管理Web服务,使得开发者可以专注于业务逻辑,而不是底层的协议细节。虽然现在Spring社区更倾向于使用Spring-WS或其他现代的Web服务框架,如Apache CXF...
在本教程中,我们将深入探讨如何使用SpringBoot构建RESTful Web服务,并结合拦截器实现更高效、可控的服务。首先,让我们理解REST(Representational State Transfer)的核心概念,它是一种架构风格,用于设计网络...
客户端用springboot实现,服务端用webService+axis+mybatis实现 java期末大作业课程设计基于springboot的医院挂号预约系统源码+数据库。 软件架构说明 服务端:WebService+axis+mybatis 服务端开发环境:jdk8,...
### 源码分析:Spring Boot + CXF 实现WebService服务端 #### 一、概述 随着企业级应用之间的交互需求日益增长,跨平台、跨语言的服务调用变得尤为重要。WebService作为一种成熟且广泛采用的技术标准,能够很好地...
为了在SpringBoot中集成logback,我们需要在项目的资源目录下创建一个名为`logback.xml`的配置文件,定义日志级别、输出格式、目标位置等参数。此外,我们还可以利用SpringBoot的条件化配置,根据环境变量或应用属性...
**CXF与SpringBoot整合** 在SpringBoot中集成CXF,通常需要以下步骤: 1. 添加CXF和相关依赖到项目的Maven或Gradle配置文件中。 2. 配置SpringBoot的主类,启用CXF的自动配置。 3. 使用CXF的注解或Java配置定义Web...
而Apache CXF则是一个强大的Web服务框架,用于创建和消费Web服务。本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入...
本文将详细介绍如何在SpringBoot项目中集成Web Service,实现一个简单的实例。 首先,我们需要在SpringBoot项目中引入必要的依赖。SpringBoot并没有直接提供对Web Service的支持,但我们可以借助Apache CXF库来实现...