【问题标题】:Generate a schema for WSDL with HTTP authentication and the maven-jaxb2-plugin使用 HTTP 身份验证和 maven-jaxb2-plugin 为 WSDL 生成模式
【发布时间】:2017-06-27 11:48:58
【问题描述】:

我想使用 jaxb2 插件生成可从安全 URL 访问的 WSDL(使用用户 ID 和密码进行基本身份验证)。

我应该在哪里指定凭据来生成架构?如果不提供它们,我会在架构生成期间收到一个 401 错误。

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.13.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <schemaLanguage>WSDL</schemaLanguage>
        <generatePackage>hello.wsdl</generatePackage>
        <schemas>
            <schema>
                <url>http://www.webservicex.com/stockquote.asmx?WSDL</url>
            </schema>
        </schemas>
    </configuration>
</plugin>

【问题讨论】:

    标签: maven maven-jaxb2-plugin


    【解决方案1】:

    目前不支持下载模式的HTTP身份验证,并且a pull request to add it was declined,因此不会实现。这是因为最好下载 WSDL 并在本地处理它,而不是在每次构建期间下载它:

    • 它使构建高度依赖于 WSDL 的可用性,这可能无法保证,最终可能会无缘无故地导致构建失败;
    • 构建不再是可重复的,这与 Maven 所追求的相反,因为您不必控制远程 WSDL 的更新方式和时间。

    a somewhat hacky way 可以用 Apache CXF Codegen 插件来代替,但我真的不推荐它。

    【讨论】:

    • 明白。但即使使用本地副本,0.14.0 也会尝试从 import schemaLocation 下载引用的架构并在此处遇到 401。如何阻止它获取架构?
    • 没关系,我手动下载了导入并将 wsdl 更改为通过 schemaLocation="./foobar.xsd" 引用它
    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多