首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从WSDL生成*.xjb文件?

如何从WSDL生成*.xjb文件?
EN

Stack Overflow用户
提问于 2015-03-27 07:36:41
回答 3查看 14.2K关注 0票数 7

我有一个WSDL文件weatherservice.wsdl,我正在尝试使用xjc为这个WSDL生成绑定。如何使用xjc完成此操作?

我在xjc中找不到任何命令行参数来执行此操作。xjc -p com -wsdl weatherservice.wsdl

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-27 21:36:26

通常,我们创建一个带有.xjb扩展的绑定文件来解决WSDL或模式中的任何冲突。例如,如果两个元素具有相同的名称,并且您希望区分它们,则可以通过将其指定为绑定文件来重命名其中一个元素。

下面是一个示例:

代码语言:javascript
复制
<jaxb:bindings 
    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"
    jaxb:extensionBindingPrefixes="xjc"
    version="2.1">

    <jaxb:globalBindings generateIsSetMethod="true" fixedAttributeAsConstantProperty="true">
        <xjc:serializable uid="1" />
    </jaxb:globalBindings>

    <jaxb:bindings schemaLocation="abcd.xsd">
        <jaxb:bindings node="//xs:element[@name='Event']/xs:simpleType">
               <jaxb:typesafeEnumClass name="EventEnumType" />
        </jaxb:bindings>
   </jaxb:bindings>

</jaxb:bindings>
票数 9
EN

Stack Overflow用户

发布于 2017-08-19 22:15:50

尝试使用这个简单的绑定。将它保存在WSDL旁边,并告诉XJC使用它。

代码语言:javascript
复制
<bindings version="2.0" 
          xmlns="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"
>

    <globalBindings>
        <xjc:simple/>
    </globalBindings>

</bindings>
票数 1
EN

Stack Overflow用户

发布于 2020-09-28 21:35:18

你可以通过Maven插件来做这件事,它简化了一点,也复杂了一点。

这需要几个XSD并应用XJB来生成Java类:

代码语言:javascript
复制
                <!-- Docs:
                        Maven plugin: http://cxf.apache.org/cxf-xjc-plugin.html
                        XJC: https://javaee.github.io/jaxb-v2/doc/user-guide/ch04.html
                        https://tech.boldare.com/make-jaxb-great-again/
                -->
                <plugin>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-xjc-plugin</artifactId>
                    <version>${version.cxf-xjc}</version>
                    <configuration>
                        <sourceRoot>${basedir}/target/generated-sources/main/java</sourceRoot>
                        <xsdOptions>
                            <xsdOption>
                                <extension>true</extension>
                                <xsd>${xsdsBaseDir}/someService/some-soap-service.xsd</xsd>
                                <!-- Args to XJC execution -->
                                <extensionArgs>
                                    <extensionArg>-XautoNameResolution</extensionArg>
                                    <extensionArg>-encoding</extensionArg><extensionArg>UTF-8</extensionArg>
                                </extensionArgs>
                            </xsdOption>
                            <xsdOption>
                                <!-- another XSD... -->
                            </xsdOption>
                        </xsdOptions>

                        <extensions>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-wsdlextension:${version.cxf-xjc}</extension>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-boolean:${version.cxf-xjc}</extension>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-ts:${version.cxf-xjc}</extension>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:${version.cxf-xjc}</extension>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-bug671:${version.cxf-xjc}</extension>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-bug986:${version.cxf-xjc}</extension>
                            <extension>org.apache.cxf.xjcplugins:cxf-xjc-javadoc:${version.cxf-xjc}</extension>
                            <!--
                            -->
                        </extensions>
                    </configuration>
                    <executions>
                        <execution>
                            <id>generate-from-xsds</id><phase>generate-sources</phase><goals><goal>xsdtojava</goal></goals>
                        </execution>
                    </executions>
                </plugin>

两个陷阱:

  1. 插件不能接受执行配置中的默认值-必须在插件级别的配置中设置。
  2. 如果您在同一模块中对架构进行了一些测试,则需要将源代码添加到反应器中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29290818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档