如何防止在 CXF Web 服务客户机中生成 JAXBElement<String>?

2022-08-31 21:00:44

我正在尝试使用 CXF 创建一个 Web 服务客户端来使用 WCF Web 服务。当我使用 wsdl2java 时,它会生成 JAXBElement 类型而不是 String 的对象。

我读到使用jaxb绑定.xml文件来设置generateElementProperty=“false”来尝试解决问题,但是我正在使用的Web服务包含7个导入的架构。

如何指定所有七个架构,或者有没有办法将其应用于所有架构?generateElementProperty="false"


答案 1

您必须创建一个绑定文件,如下所示,这将全局应用并将其用作 wsdl2java - b “bindings.txt” “wsdl”

<jaxb:bindings version="2.1" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
   <jaxb:globalBindings generateElementProperty="false"/> 
</jaxb:bindings> 

答案 2

请注意,在我的情况下,我不得不在我的jaxb绑定文件中使用,以摆脱:<xjc:simpleJAXBElement@Endpoint

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" elementFormDefault="qualified" attributeFormDefault="unqualified" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
    <xs:annotation>
        <xs:appinfo>
            <jaxb:globalBindings>
                <xjc:simple /><!-- it did only work after adding this -->
            </jaxb:globalBindings>
        </xs:appinfo>
    </xs:annotation>
</xs:schema>

推荐