【问题标题】:Code generation from WSDL using XML Catalog使用 XML 目录从 WSDL 生成代码
【发布时间】:2023-03-12 10:07:01
【问题描述】:

是否有任何工具可以使用 XML 目录从 WSDL 生成 Java 代码?问题是我有导入 XML 模式的 wsdl 文件,这些文件也导入其他模式,并且模式在 schemaLocation url 上不可用。这就是代码生成失败的原因。如果一个工具能够使用 XML 目录,则无需修改每个 WSDL 和模式中的每个 schemaLocation 即可解决此问题。

我尝试过 Eclipse 和 Netbeans 插件,但都失败了。在 Eclipse 和 Netbeans 中,我使用 XML Catalog 配置了替代模式位置,因此它们可以验证 WSDL 文件而不会出错。但是,当它们从 wsdl 生成代码时,它们会失败。

【问题讨论】:

    标签: wsdl code-generation wsdl2java wsdl2code


    【解决方案1】:

    刚刚发现 JBoss 的 wsconsume 工具能够使用 XML Catalogs 进行实体解析,而且效果很好。

    http://community.jboss.org/wiki/JBossWS-wsconsume

    【讨论】:

      【解决方案2】:

      WSDL 必须在不使用 XML 目录的情况下有效,否则使用该 WSDL 的客户端将无法使用它。

      当然,如果您永远不会使用任何不在 JBoss 平台上运行的客户端,那么您会没事的。

      【讨论】:

      • 我不确定您所说的是否适用于特定情况。通常,您希望在 Internet 不可用的情况下以离线模式(例如在构建服务器上)构建 JAX-WS 工件。
      • 是的,你是对的。对不起我的评论和困惑。我同意你的观点,在线 WebServices 应该有一个树中的所有 XSD 在线可用,否则服务消耗是有问题的 :)
      【解决方案3】:

      同时,我找到了最适合我需求的其他解决方案。有一个名为 jaxws-maven-plugin 的 maven 插件,它也能够在从 wsdl 生成源时处理 XMLCatalogs。

      https://jax-ws-commons.dev.java.net/jaxws-maven-plugin/

      <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>jaxws-maven-plugin</artifactId>
      <version>1.10</version>
      <executions>
          <execution>
              <id>id1</id>
              <phase>generate-sources</phase>
              <goals>
                  <goal>wsimport</goal>
              </goals>
              <configuration>
                  <verbose>true</verbose>
                  <keep>true</keep>
                  <catalog>${basedir}/src/main/resources/catalog.xml</catalog>
                  <packageName>org.example</packageName>
                  <wsdlDirectory>
                      ${basedir}/src/main/resources/contracts/wsdl/ExampleService/1
                  </wsdlDirectory>
                  <wsdlFiles>
                      <wsdlFile>ExampleService_1_0.wsdl</wsdlFile>
                  </wsdlFiles>
                  <xadditionalHeaders>false</xadditionalHeaders>
              </configuration>
          </execution>
      </executions>
      <configuration>
      </configuration>
      <dependencies>
          <dependency>
              <groupId>com.sun.xml.ws</groupId>
              <artifactId>jaxws-tools</artifactId>
              <version>2.1.7</version>
          </dependency>
      </dependencies>
      

      【讨论】:

      • 您能否发布您的catalog.xml 和您打算欺骗的WSDL 的相关部分?谢谢
      【解决方案4】:

      仅作记录:我在 Github 上建立了一个使用 XML 模式的小型示例项目。它可能有任何帮助:https://github.com/fmarot/xml-mapping-tutorial 请务必查看其 wiki 以获得概览:https://github.com/fmarot/xml-mapping-tutorial/wiki

      【讨论】:

        猜你喜欢
        • 2016-04-05
        • 2023-03-04
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多