java - Maven JAXB2 插件无法处理绑定文件
问题描述
如何让它识别 bingings 文件,然后从 wsdl 生成 java 类?
绒球
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.14.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatePackage>com.example.demo.schema.gbg</generatePackage>
<generateDirectory>${project.basedir}/src/main/java</generateDirectory>
<schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>*.wsdl</include>
</schemaIncludes>
<bindingDirectory>${project.basedir}/src/main/resources/bindings/</bindingDirectory>
<bindingIncludes>*.xml</bindingIncludes>
</configuration>
</plugin>
</plugins>
</build>
jaxb-bindings.xml
<?xml version="1.0" encoding="UTF-8" ?>
<jaxws:bindings
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Name the package consistently (don't use wsdl URI domain name) -->
<jaxws:package name="com.id3global"/>
<!-- Use 'wrapper style rules' to produce Java names - no I don't know what it means either -->
<jaxws:enableWrapperStyle>true</jaxws:enableWrapperStyle>
<!-- Disable generation of asynchronous send/receive methods - might be fun for later though :) -->
<jaxws:enableAsyncMapping>false</jaxws:enableAsyncMapping>
<!-- Do not generate Element properties - they collide with the type namespace in Java,
and yes, *all* this boilerplate is required for wsimport to apply the setting correctly -->
<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"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
attributeFormDefault="unqualified" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings generateElementProperty="false">
<xjc:serializable/>
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
</xs:schema>
</jaxws:bindings>
安慰:
org.xml.sax.SAXParseException; not an external binding file.
The root element must be {http://java.sun.com/xml/ns/jaxb}bindings but it is {http://java.sun.com/xml/ns/jaxws}bindings
解决方案
您是否缺少 jaxb 命名空间声明?jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb
如下例所示添加。
您也可以在 JAXB 元素内移动 JAXWS 元素。就像是。
<?xml version="1.0"?>
<jaxb:bindings 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" version="2.1" jaxb:extensionBindingPrefixes="xjc annox">
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
</jaxws:bindings>
</jaxb:bindings>
推荐阅读
- json - 是否可以在 JavaScript 函数中使用 JsonPath 之类的东西来浏览 json?
- c# - 如何将checkedListBox中列出的目录复制到另一个目录?
- postgresql - 如何将未知长度的相同字符链从字符串替换为唯一出现或它?
- amazon-web-services - 仅在收集到固定数量的数据后才执行 AWS Lambda(具有多个数据)
- python - 访问 Flask 测试响应中的所有 cookie
- maven - 库项目的存储库单元测试
- javascript - npm“crypto”模块的Nodejs加密问题
- javascript - 我使用 AngularJS 的 js 文件有问题:“未捕获的错误:[$injector:modulerr]”
- angular - Angular:如何在延迟加载的路由中使用外部模块
- r - 二元运算符错误的非数字参数