具有重复名称的WSDL-如何强制Java类名称

 手机用户2502904457 发布于 2022-12-14 10:37

背景: 我们正在开发一个与多个第三方Web服务通信的应用程序。可悲的是,其中之一使用不良的命名约定定义了WSDL文件。相同的名称经常用于响应元素及其使用的complexType。下面摘录的代码举例说明了这种情况:

  
    
      
        
      
    
  
  
    
      
    
  

我们使用Maven cxf codegen插件(jaxb / jax-ws)将其编译为Java类。为了避免名称冲突,我们以前使用了-AutoNameResolution选项。但是,我们发现这会导致意外的结果,在某些机器上,一类被重命名为ResetPasswordResponse2.java,而在其他机器上,另一类被重命名了。这使协作开发变得非常困难,也给我们带来了对未来的担忧(如果无法在Jenkins上正确编译该怎么办?)

问题: 我正在寻找一种手动确定翻译/重新命名方式的方法。

有人告诉我,仅更改WSDL中的名称是行不通的,因为Java文件中的xml命名注释很重要。

我也研究了绑定文件或内联绑定语句,但无法使其正常工作。http://wiki.netbeans.org/WsdlCustomizer#Class_Customization上的文档似乎暗示着只能对“ wsdl:portType,wsdl:fault,soap:headerfault和wsdl:server”进行名称更改,这表明我可能是试图做一些根本不可能的事情。

jaxb / jax-ws绑定是否可能解决?还有其他选择吗?

1 个回答
  • 检查此问题并回答:

    WSDL之外的XSD的JAXB绑定

    简而言之,您可以使用所谓的绑定文件来自定义名称。

    <jxb:bindings version="2.1" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <jxb:bindings schemaLocation="xsdschema.xsd" node="/xs:schema">
            <jxb:bindings node="xs:complexType[@name='ResetPasswordResponse']">
                <jxb:class name="ResetPasswordResponseType"/>
            </jxb:bindings>
        </jxb:bindings>
    </jxb:bindings>
    

    您可能对以下内容感兴趣jaxb:nameXmlTransform

    JAXB的问题:nameXmlTransform typeName前缀不起作用

    这将允许您全局自定义类型或元素命名规则:

    <?xml version="1.0" encoding="UTF-8"?>
    <jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" jaxb:version="2.0">
       <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
          <jaxb:schemaBindings>
             <jaxb:nameXmlTransform>
                <jaxb:typeName suffix="Type"/>
                <jaxb:elementName suffix="Element"/>
             </jaxb:nameXmlTransform>
          </jaxb:schemaBindings>
       </jaxb:bindings>
    </jaxb:bindings>
    

    积分去布莱斯Doughan。

    2022-12-14 10:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有