JAXB2基础知识插件-我的外部绑定定制文件中的schemaLocation问题

库尔迪普·贾恩

我正在使用JAXB从我的XSD文件生成类。我想让生成的类实现一个公共接口。因此,我正在尝试使用外部绑定文件方法来执行JAXB2 Basics插件这是我的自定义绑定文件:

customBindingFile.xjb

<?xml version="1.0"?>
<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
  xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
  jxb:extensionBindingPrefixes="xjc">

    <jxb:bindings schemaLocation="abc-api.xsd">
      <jxb:bindings node="//xs:complexType[@name='MyClass']">
        <inheritance:implements>com.kuldeep.CommonInterface</inheritance:implements> 
      </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

以下是我在pom文件中用于生成源代码的maven插件:请注意,我添加的注释是对现有插件条目所做的更改。

pom.xml

<plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>${cxf.plugin.version}</version>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>

      <!-- **extensions and args added by me** -->
        <extensions>
            <extension>org.jvnet.jaxb2_commons:jaxb2-basics:0.9.2</extension>
        </extensions>
        <args>
            <arg>-Xinheritance</arg>
        </args>


        <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
        <defaultOptions>
          <bindingFiles>
            <bindingFile>src/main/resources/jaxws_binding.xml</bindingFile>
            <bindingFile>src/main/resources/jaxb_binding.xml</bindingFile>
          </bindingFiles>
        </defaultOptions>
        <wsdlOptions>
          ......
          <wsdlOption>
            <wsdl>${project.build.directory}/generated/framework/cxf/abc-api-inline.wsdl</wsdl>

            <!-- **bindingFile added by me** -->
            <bindingFile>src/main/resources/customBindingFile.xjb</bindingFile>

          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>

  <!-- **dependency added by me** -->
  <dependencies>
    <dependency>
      <groupId>org.jvnet.jaxb2_commons</groupId>
      <artifactId>jaxb2-basics</artifactId>
      <version>0.9.2</version>
    </dependency>
  </dependencies>

</plugin>

我的问题是我的模式文件abc-api.xsd驻留在其他项目中,因此当我尝试进行maven安装以生成我的类时,我收到错误消息,说abc-api.xsd不属于此编译的一部分

[错误]无法在项目上执行目标org.apache.cxf:cxf-codegen-plugin:3.0.3:wsdl2java(生成源):执行目标org.apache.cxf:cxf-codegen-plugin的生成源: 3.0.3:wsdl2java失败:文件:/ I:/project/src/main/resources/customBindingFile.xjb [9,56]:“文件:/ I:/project/src/main/resources/abc-api.xsd ”不属于本汇编的一部分。这是“ file:/ I:/project/src/main/resources/jaxb_binding.xml”的错误吗?-> [帮助1]

而且,如果我从customBindingFile.xjb中删除了schemaLocation属性,它将无法正常工作并给出错误消息:

XPath评估“ // xs:complexType [@ name ='MyClass']”会导致目标节点为空

因此,我的问题是如何避免在customBindingFile.xjb中提供特定的架构文件名称/位置,而仅将其应用于生成类所使用的任何xsd。

库尔迪普·贾恩

在建筑师的帮助下,我得以解决此问题。我添加了一个jaxws绑定文件,并在其中使用了无前缀的xpath查询来匹配我的请求元素。这样,我不需要在任何地方提供模式位置,它将基于XPath查询应用于特定的WSDL。

jaxws_binding_inheritance.xml

<jaxws:bindings version="2.0" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  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"
  xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" jaxb:extensionBindingPrefixes="inheritance xjc"
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1">

  <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>

  <jaxws:bindings
    node="*[local-name()='definitions']/*[local-name()='types']/*[local-name()='schema' and 
          (@targetNamespace='urn:net:mycompany:api:abc')]">

    <jaxb:bindings
      node="//*[local-name()='element' and 
            not(@name = 'ExcludeThisRequest' or @name = 'AlsoExcludeThisRequest') and 
            (substring(@name, string-length(@name) - string-length('Request') +1) = 'Request')]/*[local-name()='complexType']">
      <inheritance:implements>com.kuldeep.CommonRequest</inheritance:implements>
    </jaxb:bindings>

  </jaxws:bindings>
</jaxws:bindings>

wsdloption为我想在其中应用的wsdl添加了jaxws绑定文件(jaxws_binding_inheritance.xml)

pom.xml

<wsdlOption>
  <wsdl>${project.build.directory}/generated/framework/cxf/abc-api-inline.wsdl</wsdl>
  <bindingFiles>
    <bindingFile>src/main/resources/jaxws_binding_inheritance.xml</bindingFile>
  </bindingFiles>
</wsdlOption>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Maven JAXB2 插件无法处理绑定文件

来自分类Dev

NSIS基础知识出了问题

来自分类Dev

XJC Maven插件(JAXB2 - Maven的插件)的Java 11个迁移问题

来自分类Dev

在本文的crontab基础知识中,“> / dev / null 2>&1”是什么意思?

来自分类Dev

JavaScript打字机的问题和基础知识

来自分类Dev

C基础知识-变量和指针有问题

来自分类Dev

批处理的基础知识:我应该从哪里开始?

来自分类Dev

Git基础知识,如何从git抓取文件?

来自分类Dev

Ruby中的消息是实现细节还是基础知识

来自分类Dev

如何在Debian中仅安装基础知识?

来自分类Dev

PHP基础知识-重定向页面中的Echo消息

来自分类Dev

pytest 基础知识。在目录中运行测试

来自分类Dev

一般来说,外部CSS文件中的基础知识是否有“顺序”

来自分类Dev

我不了解Swift Unicode标量的基础知识。我想念什么

来自分类Dev

CXF JAXB 基础知识等于/哈希码

来自分类Dev

我该如何对现有应用程序进行泊坞操作...基础知识

来自分类Dev

Javascript:类构造函数基础知识-在单独的方法中定义属性

来自分类Dev

多个类的基础知识,将打印类放入main方法中

来自分类Dev

Pygame(基础知识)

来自分类Dev

递归基础知识

来自分类Dev

BeautifulSoup基础知识

来自分类Dev

Swift基础知识“!” &“?”

来自分类Dev

JAXB2 Basics Plugins - Issue with schemaLocation in my External binding customization file

来自分类Dev

关于带有 SoapUI 和 Property Transfer 的 xPath 结构的问题 - 需要一些基础知识

来自分类Dev

SQL基础知识:如何在一个查询中从多个表中获取详细信息?

来自分类Dev

了解航点基础知识

来自分类Dev

Javascript登录,基础知识

来自分类Dev

Matlab类基础知识

来自分类Dev

了解航点基础知识

Related 相关文章

  1. 1

    Maven JAXB2 插件无法处理绑定文件

  2. 2

    NSIS基础知识出了问题

  3. 3

    XJC Maven插件(JAXB2 - Maven的插件)的Java 11个迁移问题

  4. 4

    在本文的crontab基础知识中,“> / dev / null 2>&1”是什么意思?

  5. 5

    JavaScript打字机的问题和基础知识

  6. 6

    C基础知识-变量和指针有问题

  7. 7

    批处理的基础知识:我应该从哪里开始?

  8. 8

    Git基础知识,如何从git抓取文件?

  9. 9

    Ruby中的消息是实现细节还是基础知识

  10. 10

    如何在Debian中仅安装基础知识?

  11. 11

    PHP基础知识-重定向页面中的Echo消息

  12. 12

    pytest 基础知识。在目录中运行测试

  13. 13

    一般来说,外部CSS文件中的基础知识是否有“顺序”

  14. 14

    我不了解Swift Unicode标量的基础知识。我想念什么

  15. 15

    CXF JAXB 基础知识等于/哈希码

  16. 16

    我该如何对现有应用程序进行泊坞操作...基础知识

  17. 17

    Javascript:类构造函数基础知识-在单独的方法中定义属性

  18. 18

    多个类的基础知识,将打印类放入main方法中

  19. 19

    Pygame(基础知识)

  20. 20

    递归基础知识

  21. 21

    BeautifulSoup基础知识

  22. 22

    Swift基础知识“!” &“?”

  23. 23

    JAXB2 Basics Plugins - Issue with schemaLocation in my External binding customization file

  24. 24

    关于带有 SoapUI 和 Property Transfer 的 xPath 结构的问题 - 需要一些基础知识

  25. 25

    SQL基础知识:如何在一个查询中从多个表中获取详细信息?

  26. 26

    了解航点基础知识

  27. 27

    Javascript登录,基础知识

  28. 28

    Matlab类基础知识

  29. 29

    了解航点基础知识

热门标签

归档