我有一组从WSDL生成的Java类,它们工作得很好;我正在为我正在使用的另一个Web服务向项目中添加另一个WSDL,但是在从第二个WSDL生成的类中没有得到@XmlRootElement注解,我不明白为什么没有。
下面是pom的插件部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceType>wsdl</sourceType>
<sources>
<source>${resources.path}my-module/src/main/resources/wsdl/w1.wsdl</source>
<source>${resources.path}my-module/src/main/resources/wsdl/w2.wsdl</source>
</sources>
<extension>true</extension>
<xjbSources>
<xjbSource>src/main/resources/xjb/bindings.xjb</xjbSource>
</xjbSources>
</configuration>
</plugin>
这里是绑定。xjb:
<?xml version="1.0"?>
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:bindings>
<!-- annotate tag here? -->
<jxb:globalBindings>
<xjc:simple/>
</jxb:globalBindings>
</jxb:bindings>
</jxb:bindings>
我在this SO post中读到了关于使用annotate
标签的内容,所以我插入了
<annox:annotate>
<annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" />
</annox:annotate>
在bindings.xjb文件中指定的位置,但是当然我没有annox
前缀的定义,所以这不起作用。这篇文章没有说明这是在哪里定义的。
我也在this SO post中查看了多个答案;不幸的是,各种方法中的每一种都省略了一些步骤。例如,我愿意直接调用马歇尔和unmarshall方法,但是我需要知道在哪里可以获得它们所说的“JAXBContext”,以及unmarshall调用是什么样子的,或者在哪里可以查找它。annox
是正确的方法吗?还有其他正确的方法吗?
2条答案
按热度按时间wnavrhmk1#
我刚刚完成了从旧的jaxb 2-maven-plugin转换,它是Maven中只有1个其他项目的依赖项,而maven-jaxb 2-plugin是18个项目的依赖项。似乎有更多的文件。查看JAXB 2 Maven插件Wiki
下面是一个pom.xml示例:
下面是一个xsd示例:
aiazj4mn2#
对于基于jakarta的注解(Sping Boot 3使用它们,例如),这一个对我有用:
bindings.xjb文件: