使用XML Catalog从WSDL生成代码

时间:2010-01-29 17:22:45

标签: wsdl code-generation wsdl2java wsdl2code

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

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

4 个答案:

答案 0 :(得分:1)

刚刚发现JBoss的wsconsume工具能够使用XML目录进行实体解析,并且工作正常。

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

答案 1 :(得分:1)

仅供记录:我在Github上设置了一个使用XML模式的小示例项目。它可能有任何帮助:https://github.com/fmarot/xml-mapping-tutorial 请务必检查其维基以获得概述:https://github.com/fmarot/xml-mapping-tutorial/wiki

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

与此同时,我找到了另一种最符合我需求的解决方案。有一个名为jaxws-maven-plugin的maven插件,当从wsdl生成源时,它也能够处理XMLCatalog。

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>