当前位置:  开发笔记 > 编程语言 > 正文

我想在CXF codegen上添加@XmlRoot注释

如何解决《我想在CXFcodegen上添加@XmlRoot注释》经验,为你挑选了1个好方法。

我有一个WSDL文件,其中包含以下条目:



  
    
      
      
        
          
          
          
        
      
      
      
        
          
            ....

我使用CXF Codegen插件进行以下设置:


    org.apache.cxf
    cxf-codegen-plugin
    
        
            generate-sources
            generate-sources
            
                ${basedir}/target/generated-sources/wsdl2java
                UTF-8
            
            
                wsdl2java
            
        
    

生成的java代码如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "OutputMapping1", propOrder = {
    "getListValues"
})
public class OutputMapping1 {

    @XmlElement(required = true)
    protected List getListValues;

问题是这里缺少@XmlRootElement.还有另一个类似的问题

    maven-cxf-codegen-plugin使用Jaxb绑定为所有生成的类添加继承

    注释CXF(wsdl2java)生成的包

    从外部为类创建jaxb注释

正如其他答案所提到的,我可以放置绑定文件.所以我创建了一个包含以下内容的绑定文件:


        
            
                
          
        

我已经将以下块添加到POM.XML:


    
        ${basedir}/src/main/resources/wsdl/CP_Ablakido_1.wsdl
                                               
            ${basedir}/src/main/resources/wsdl/CP_Ablakido_1.xjb
            
        
    

之后我收到了错误消息:

com.sun.istack.SAXParseException2; systemId: file:/Project/icp-integration/icpiCameI/src/main/resources/wsdl/CP_Ablakido_1.xjb; lineNumber: 9; columnNumber: 72; XPath evaluation of "//xs:element[@name='GetList_11Response']" results in empty target node
    at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:624)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.reportError(Internalizer.java:618)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:294)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:390)
    at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:146)

所以我不知道当complexType是OutputMapping1然后将@XmlRootElement放在OutputMapping1.java中并且名称为"GetList_11Response"时,我怎么能描述.



1> Csákány Róbe..:

我找到了解决方案。这很棘手,因为:

    必须处理WSDL中内联的XSD。(技巧是schemaLocation =“ CP_Ablakido_1.wsdl#types1”。它告诉JAXB使用WSDL文件中的节点。)

    必须配置CXF以使用XJC插件(annox)。

必须将以下片段添加到POM.XML:


    ${basedir}/src/main/resources/wsdl/CP_Ablakido_1.wsdl
    
        ${basedir}/src/main/resources/wsdl/CP_Ablakido_1.xjb 
    
    -xjc-Xannotate

和依赖项必须添加到插件:


    org.jvnet.jaxb2_commons
    jaxb2-basics-annotate
    0.6.0
   


    org.apache.cxf.xjcplugins
    cxf-xjc-ts
    3.0.5

XJB文件:




   
       
            
                
          
          
      
            
                
          
      
   

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有