当前位置: 首页 > news >正文

webservice xfire升级为cxf cxf常用注解 cxf技术点 qualified如何设置

关键点

  • 确保参数名称保持一致
  • 确保参数命名空间保持一致
  • 确保接口命名空间保持一致
  • 确保请求头设置正确
  • 确保用soapui工具解析的参数结构一致

cxf常用注解

定义接口用到的注解

  • 定义接口名称,和接口命名空间
    @WebService(name=“ams” ,targetNamespace = “http://iface.xt.service.yyy.com”)
  • 定义方法
    @WebMethod(action = “application/soap+xml;charset=utf-8”)
    action是设置请求头,在客户端调用时,需要设置Header为application/soap+xml;charset=utf-8
    在这里插入图片描述
  • 定义返回值的参数名称
    @WebResult(name = “out”)
  • 定义参数名称
    @WebParam(name = “in0”)

自定义参数类用到的注解

  • 指定参数类转xml根节点名称和命名空间
    @XmlRootElement(name = “XqdxxEntity”, namespace = “http://entity.service.yyy.com”)
  • 指定参数类中属性的命名空间
    @XmlElement(namespace = “http://entity.service.yyy.com”)

碰到的问题

参数是数组或集合,但是使用soapui工具解析出来的参数,cxf框架少了一层标签。

解决办法:
再定义一个类,包装一下参数类,使用这个类作为参数

@XmlRootElement(name = "CgqdxxEntities", namespace = "http://entity.service.yyy.com")
public class CgqdxxEntitiesWrapper {private List<CgqdxxEntity> cgqdxxEntities;@XmlElement(name = "CgqdxxEntity", namespace = "http://entity.service.yyy.com")public List<CgqdxxEntity> getCgqdxxEntities() {return cgqdxxEntities;}public void setCgqdxxEntities(List<CgqdxxEntity> cgqdxxEntities) {this.cgqdxxEntities = cgqdxxEntities;}
}

加注解,让生成的wsdl文档中,<xs:element form="unqualified"改成<xs:element form="qualified

  1. 使用 @XmlSchema 注解
    在你的 Java 包中,你可以使用 @XmlSchema 注解来设置元素的命名空间和 elementFormDefault 属性。你可以创建一个 package-info.java 文件,设置 elementFormDefault 为 XmlNsForm.QUALIFIED。

示例 package-info.java 文件

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;@XmlSchema(namespace = "http://example.com/ns",elementFormDefault = XmlNsForm.QUALIFIED // 设置为 QUALIFIED
)
package com.example.service; // 根据你的实际包名修改

在这个示例中,elementFormDefault 设置为 QUALIFIED,这会使所有包内的元素都要求带上命名空间。
理解 form 属性
unqualified:该元素可以不带命名空间。
qualified:该元素必须带命名空间。


http://www.mrgr.cn/news/35959.html

相关文章:

  • Android setContentView执行流程(一)-生成DecorView
  • Go语言开发基于SQLite数据库实现用户表查询详情接口(三)
  • 解决表格出现滚动条样式错乱问题
  • C语言数据结构与算法--简单实现队列的入队和出队
  • SASS 控制指令详解@for、@if、@each、@while
  • WorkFlow源码剖析——Communicator之TCPServer(下)
  • 计算机视觉必备模型YOLO系列模型的知识点,提供YOLOv1-v8模型结构与代码实例
  • 快速排序 C语言实现
  • 在深度学习中,是否应该打破正负样本1:1的迷信思想?
  • 基于cesium风场的文件
  • linux常见指令与权限【第四课】
  • 搭建HAproxy----7层负载均衡集群
  • 【学术会议征稿】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)
  • 数字化转型:国内证书哪个更有用
  • 前端——flex布局
  • 解决错误Cloning failed using an ssh key for authentication
  • 高效职场助手
  • 从零开始学习PX4源码5(遥控器数据)
  • 在Gin框架中实现Token令牌认证
  • 惊艳桌面时钟软件 为你的桌面打造专属时间管理!
  • ECharts设置xAxis轴的name位置
  • 2024中国新科技100强名单出炉!MIAOYUN荣获“2024云原生领航企业奖”
  • 分布式事务(1)
  • 解锁编程潜力,从掌握GitHub开始
  • 分布式事务(2)
  • 数据结构习题