先看下效果:

点击wsdl连接就可以看到具体服务的wsdl描述。

该接口的方法使用的参数为实体对象。

 public void ProcessMessage(ESBEnvelope ESBEnvelope) {// 逻辑处理System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAA: " + ESBEnvelope.ESBHeader);}

下面介绍一下上面的效果如何实现。

构建环境

为了兼容其他系统,我们只能使用wsdd这种方式创建webservice。项目本身使用spring框架+jdk1.8。一般情况下可以直接考虑使用spring整合axis这种方式。但是条件特殊,以下的这种方式直接使用spring注解是没用的。而且和jdk1.8新特性不兼容。

  • wsdd的方式创建webservice
  • spring框架
  • jdk1.8

改造原来的代码(非必要)

wsdd不支持jdk1.8以上的新特性,具体报错我忘了,如果类中有lamda表达式或者简化的泛型都需要注意修改。
wsdd不兼容注解注入方式。具体原因现在不清楚,怀疑是加载顺序问题。现象是,使用注解注入的bean没有实例化。
因此考虑使用如下方式注入:

 public CheckLaToAuraImpl() {String realPath = "../application-nikola.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(realPath);sequenceFunMapper = (SequenceFunMapper) applicationContext.getBean("sequenceFunMapper");tNbCommonFun = (NbCommonFun) applicationContext.getBean("nbCommonFun");uwTransactionStatusMapper = (UwTransactionStatusMapper) applicationContext.getBean("uwTransactionStatusMapper");}

提供接口方法

 public void ProcessMessage(ESBEnvelope ESBEnvelope) {// 逻辑处理System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAA: " + ESBEnvelope.ESBHeader);}

这里定义接口方法和平时使用的方法没有什么区别。

添加wsdd文件

发布这种方式的webservice需要添加部署文件server-config.wsdd。该文件需要放到WEB-INF目录下项目启动时自动部署。文件具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/"xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><globalConfiguration><parameter name="adminPassword" value="admin" /><parameter name="attachments.Directory"value="./attachments" /><parameter name="attachments.implementation"value="org.apache.axis.attachments.AttachmentsImpl" /><parameter name="sendXsiTypes" value="true" /><parameter name="sendMultiRefs" value="true" /><parameter name="sendXMLDeclaration" value="true" /><parameter name="axis.sendMinimizedElements" value="true" /><requestFlow><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="session" /></handler><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="request" /><parameter name="extension" value=".jwr" /></handler></requestFlow></globalConfiguration><handler name="LocalResponder"type="java:org.apache.axis.transport.local.LocalResponder" /><handler name="URLMapper"type="java:org.apache.axis.handlers.http.URLMapper" /><handler name="Authenticate"type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" /><transport name="http"><requestFlow><handler type="URLMapper" /><handlertype="java:org.apache.axis.handlers.http.HTTPAuthHandler" /></requestFlow></transport><transport name="local"><responseFlow><handler type="LocalResponder" /></responseFlow></transport><!-- web service 接口 -->
<!--     <service name="CheckLaToAura" provider="java:RPC" style="rpc|document|wrapped" use="encoded|literal" streaming="off|on" attachment="MIME|DIME|NONE"> --><service name="CheckLaToAura" provider="java:RPC" ><parameter name="className" value="com.nikola.uwca.service.impl.urn.CheckLaToAuraImpl" /><parameter name="allowedMethods" value="underwrite,ProcessMessage,onlyString,useObj" /><typeMapping languageSpecificType="java:com.nikola.uwca.service.urn.ESBEnvelope"  qname="ns1:ESBEnvelope" xmlns:ns1="com.nikola.uwca.service.urn"  deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"  serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" />  <typeMapping languageSpecificType="java:com.nikola.uwca.service.urn.ESBHeader"  qname="ns2:ESBHeader" xmlns:ns2="com.nikola.uwca.service.urn"  deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"  serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" />  </service></deployment>

上面的配置我们只需要操作service 节点。className为全类名。allowedMethods为类中要发布的方法名。typeMapping 用来指定序列化器和反序列化器,以及对应需要序列化和反序列化的类的包名和类名。
注意相应的类要实现序列化接口

public class ESBEnvelope implements Serializable{private static final long serialVersionUID = 1L;public ESBHeader ESBHeader;public String MsgBody;public ESBEnvelope() {}
}

最后启动项目就可以看到发布的接口了。

其他要注意的地方

你也许会奇怪为什么你不写get和set方法。下图中的name的值生成的原则是根据get和set方法名生成的。只有使用public将属性共享出来才会使用实际的名字。比如:getMsgID() 对应的属性名:MsgID和msgID是没有区别的。即使定义属性名为MsgID生成后的也会变为msgID。而把get set 方法去掉后,则会使用属性名生成我们需要的element。

使用WSDD搭建webservice相关推荐

  1. Axis2搭建WebService服务

    使用Axis2搭建WebService服务 文章目录 一.服务端部署 1.1 在web.xml配置文件中添加映射路径: 2. 创建目录及文件 3. 新建服务接口 4. 新建接口实现类 5. 发布服务 ...

  2. Java工作笔记-WebService使用JDK搭建WebService及调用

    首先是使用jdk搭建WebService 源码如下: WeatherService.java package webservice;public interface WeatherService {S ...

  3. SpringBoot+Axis2搭建WebService服务端

    SpringBoot+Axis2搭建WebService服务端 之前用过Spring + Axis2搭建过WebService项目,网上也有很多资料教程,最近需要在一个SpringBoot项目中添加A ...

  4. 如何再IED中搭建webService服务器

    原文链接:https://blog.csdn.net/qq_41961113/article/details/80239501 一.WEB Services 服务器 1.File-new projec ...

  5. 搭建webservice环境,测试本地WSDL接口

    背景 作为一个ETL工程师,除了写SQL相关的工作,还面临着各种各样的数据接口调用.因此自己根据项目的环境自己搭建了一个wsdl,以此类推,用于自身的数据接口测试. 工具: MyEclipse 10. ...

  6. gsoap搭建WebService服务

    WebService.soap.gsoap基本概念 WebService服务基本概念:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件.本质上就是要以标准的形式实 ...

  7. Java笔记-JDK搭建WebService客户端其他调用方法

    项目如下 这里大部分代码和第一个客户端一样. package webservice.client;import webservice.WeatherServiceImpl;import javax.x ...

  8. java的cxf的maven_Maven+Spirng+Mybatis+CXF搭建WebService服务

    修改pom.xml配置文件 增加以下配置 3.1.1 org.apache.cxf cxf-rt-frontend-jaxws ${cxf.version} org.apache.cxf cxf-rt ...

  9. java webservice接口开发_搭建Soap webservice api接口测试案例系统

    Eclipse下创建WebService项目,主要目的是作为Postman.soapUI等工具进行soap webservice 接口测试的案例. 本文基于Axis2框架,在eclipse环境下搭建w ...

最新文章

  1. oa部署mysql_oa系统部署
  2. Java中的ClassLoader
  3. Android设计模式之——中介者模式
  4. keepalived mysql双主架构图_MySQL双机热备(keepalived+mysql双主)
  5. linux下getrlimit与sysconf函数
  6. 全网最全教你轻松把vue项目部署到IIS服务器
  7. 基于jquery,bootstrap数据验证插件bootstrapValidator 教程
  8. element-ui的pagination分页 增加首页和末页
  9. 最快下载速度100Mbps!4G LTE技术全解析
  10. quadro 2000专业显卡 win7计算机体验指数5.9,quadro显卡天梯图小虫_quadro专业显卡天梯图小虫2020年 - 系统家园...
  11. 云流化技术应用之K12VR云课堂
  12. 学python对数学要求高吗_想要学好python编程一定要求数学要好吗?
  13. 使用minizip压缩文件
  14. 2021-07-14软件测试实习所学内容
  15. 您该怎样科学地准备过年?
  16. 全球首个 AI 说唱歌手 TikTok 发新歌,东西方审美差异巨大
  17. 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数
  18. LDO稳压器详解(一)-参数概念
  19. 数字标牌行业嵌入式主板方案
  20. ssim算法计算图片_图像质量评估算法 SSIM(结构相似性)

热门文章

  1. uniapp h5 公众号 支付
  2. Android 常用API自查表(一)
  3. 忙中偷闲 2020.12.23日记
  4. java hs err pid_JVM致命错误日志(hs_err_pid.log)分析
  5. 区块链应用于再保险业创造5百万商机
  6. reverse1题解
  7. 网络协议之HTTP、HTTPS
  8. 小程序保存net webapi的sessionid
  9. 向量夹角顺时针或逆时针,交叉口向左拐向右拐的问题
  10. Unity与IOS⭐Xcode打包,上架TestFlight的完整教程