cxf 解组错误:意外元素

2024-06-18

我正在尝试使用 SOAP 服务,使用 maven cxf-codegen-plugin 生成存根。 大多数服务一切都很好,除了一个丑陋的服务。 在这种情况下,当调用时,服务会发送正确的响应,但我生成的存根无法解组它,生成一个异常,例如(为了简短起见,我将 url 替换为 urlx 之类的名称):

javax.xml.ws.soap.SOAPFaultException:解组错误:意外元素(uri:“url3”,本地:“cap”)。预期元素为 .......

实际上,意外字段是扩展的一部分,该扩展具有与扩展元素不同的指定命名空间。 这里是命名空间定义:

    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions ...xmlns:ns1="url1" ... xmlns:ns3="url3" ... targetNamespace="someUrl">
     <wsdl:documentation>WSDatiPersonali</wsdl:documentation>
    <wsdl:types>
        <xs:schema xmlns:ax226="url0" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="url0">

扩展的 xs 就像:

<xs:schema xmlns:ax225="url1" xmlns:ax227="url0" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="url1">
            <xs:import namespace="url0"/>
            <xs:complexType name="Indirizzo">
                <xs:sequence>
                    <xs:element minOccurs="0" name="cap" nillable="true" type="xs:string"/>

            </xs:sequence>
        </xs:complexType>

扩展的是:

<xs:schema xmlns:ax224="url3" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="url3">
    <xs:complexType name="Indirizzo">
                <xs:complexContent>
                    <xs:extension base="ns1:Indirizzo">
                        <xs:sequence>
                         ............

                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
     </xs:complexType>
</xs:schema>

正如您所看到的,“cap”字段位于父亲内部,当儿子的字段填充到服务响应中时,cxf 无法在儿子的命名空间下找到它。

有修复它的想法吗?


最后我找到了某种禁用肥皂验证的解决方法。 实际上可以通过多种方式做到这一点:

  • 在响应类上使用注释,例如:

     @org.apache.cxf.annotations.EndpointProperty(key = "soap.no.validate.parts", value = "true") 
    
  • 设置服务存根的属性:

     JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            factory.setServiceClass(YourServiceClass.class);            
            factory.setAddress(this.constants.SOME_URL);
            Map<String, Object> properties = factory.getProperties();
            if(properties==null){
                properties= new HashMap<String, Object>();
            }
    
            properties.put("soap.no.validate.parts", "true");
            /**
            * an other option is : 
            * properties.put("set-jaxb-validation-event-handler", "false");
            */
            factory.setProperties(properties);
            WSDatiPersonaliPortType port = (WSDatiPersonaliPortType) factory.create();
    

我希望这对其他人有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cxf 解组错误:意外元素 的相关文章

随机推荐

  • 为什么 Visual Studio 2008™ 会崩溃? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我知道这个线程 https stackoverflow com questions 96780 why is visual studio consta
  • 非实例化模板成员的编译时错误而不是链接时错误

    我有模板类ItemContainer这实际上是整个容器系列的外观 具有不同的功能 如排序 索引 分组等 实施细节隐藏在cpp 使用 pimpl 习惯用法和显式实例化的文件 模板仅使用定义容器实际行为的众所周知的有限实现类集进行实例化 主模板
  • 自定义相机视图 Swift iOS 8 iPhone Xcode 6.1

    我想在 iPhone 的 View 中使用相机 我不想使用典型的全屏相机视图 而是我自己的 例如 我想在屏幕中间有一个 200x200 的正方形 并且有一个相机预览 在这个方块下面我想要一个拍照按钮 怎么做 我是新手 速度很快 你会想要使用
  • 为什么 True 等于 -1

    我想知道为什么 True 等于 1 而不是 1 如果我没记错的话 以前 在 C 语言中 true 将等于 1 Dim t f As Integer t True f False Console WriteLine t 1 Console W
  • Xhr上传event.loaded问题

    opts xhr function var xhr new window XMLHttpRequest Upload progress xhr upload onprogress function e if e lengthComputab
  • 验证十进制数

    我有一个表单 我正在使用 jQuery 验证插件来验证它 现在我正在尝试验证十进制数字输入 我已经尝试过以下代码 但它不起作用 是正则表达式的问题还是我的代码中编写自定义规则的方式错误 rules paid amount required
  • 如何使用 Kerberos 身份验证从 C# 客户端调用 Sharepoint Web 服务?

    我们开发了一个 Web 服务 它位于共享点站点的上下文中并运行 使用普通的 Windows 身份验证可以正常工作 我们现在有一个客户想要将其安装在启用 Kerberos 的共享点站点上 我们需要对 Web 服务 调用客户端 Windows
  • _ 和 self 之间的区别。在 Objective-C 中

    使用下划线和使用selfObjective C 中调用时的关键字 property 财产申报 property weak nonatomic NSString myString Calling synthesize关于物业 synthesi
  • 在单个 select 语句中多次有条件地求和同一列?

    我有一个表 显示每个月在给定位置的各种类型的部署的员工部署情况 ID Location ID Date NumEmployees DeploymentType ID 例如 一些记录可能是 1 L1 12 2010 7 1 Permanent
  • Django管理命令是在单独的进程中执行的吗?

    Django 有很多管理命令 此外 我们还可以编写自己的命令 进行 shell 调用后会发生什么python manage py XXX 代码是否会在从 shell 启动的进程中执行 或者 shell 进程只是与执行命令的主 Django
  • 当结构体中的指针指向结构体本身时,C 如何解决循环定义?

    我已经习惯了像下面这样的代码很长一段时间 但是C编译器如何解决循环定义问题呢 或者这个问题真的存在吗 struct node int data struct node next circular definition for struct
  • 二元表达式树 C++

    我有一个小问题 我正在尝试向二叉树添加数学表达式 但我无法理解该算法 这里是 If the current token is a Add a new node as the left child of the current node an
  • 如何在 Spring 中从 application.properties 重新加载 @Value 属性? [复制]

    这个问题在这里已经有答案了 我有一个spring boot应用 在run文件夹下 有一个额外的配置文件 dir config application properties 当应用程序启动时 它使用文件中的值并将它们注入到 Value my
  • jQuery Mobile:$(...).listview 不是函数

    我正在尝试在 UL 中动态插入 LI 元素后刷新 jQuery Mobile 中的列表视图 每当我尝试 myUL listview refresh 在控制台上我收到错误 未捕获的类型错误 listview 不是函数 我该如何解决这个问题 确
  • R闪亮数据表在开始时不显示记录(行)

    我正在构建一个带有数据表的闪亮应用程序 我想要的是启动时不显示任何记录 行 这样您只能看到表格顶部的过滤器 当您开始输入时 会显示行 我在数据表中找不到选项 这可能吗 下面是示例代码 shinyApp ui navbarPage title
  • 有没有办法拥有租户特定的 JWT 令牌

    我目前正在开发一个 SPA 应用程序 角度 后端使用 Python Flask API 该应用程序将支持多个租户 我对安全概念有点挣扎 我目前正在使用 jwt extend 颁发的 JWT 令牌对所有租户都有效 我当然可以从令牌中获取用户
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • IE Facebook 应用程序 iFrame 上的会话丢失

    当用户使用 Internet Explorer 时 我的 Facebook 应用程序出现问题 我的应用程序作为 Canvas 页面加载到 iFrame 中 回发后 Cookie 和 Session 将丢失 Firefox 根本不会发生这种情
  • 如何序列化为日期时间

    努力获取任何时区的日期时间 我使用 DateTimeOffset 字符串和 XmlElement 属性 当我这样做时 我收到以下错误 InvalidOperationException 日期时间 是一个无效值 XmlElementAttri
  • cxf 解组错误:意外元素

    我正在尝试使用 SOAP 服务 使用 maven cxf codegen plugin 生成存根 大多数服务一切都很好 除了一个丑陋的服务 在这种情况下 当调用时 服务会发送正确的响应 但我生成的存根无法解组它 生成一个异常 例如 为了简短