【问题标题】:jaxws-maven-plugin and proxy exclusionsjaxws-maven-plugin 和代理排除
【发布时间】:2013-04-17 12:36:19
【问题描述】:

我使用 jaxws-maven-plugin 从 wsdl 生成 java。 wsdl 位于本地网络,但指的是互联网上的一些 xsd。

使用maven插件生成代码时会遇到麻烦,因为它缺少高级http代理设置。

是否有解决此问题的方法? 我的配置是:

    <plugin>
        <groupId>org.jvnet.jax-ws-commons</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.2</version>
        <executions>
            <execution>
                <goals>
                    <goal>wsimport</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
         <!--<httpproxy>127.0.0.1:5865</httpproxy>-->
            <packageName>my.pkg</packageName>
            <verbose>true</verbose>
            <wsdlUrls>
                <wsdlUrl>
                    http://10.31.7.64:13080/service.wsdl
                </wsdlUrl>
            </wsdlUrls>
        </configuration>
    </plugin>

没有代理我得到了

parsing WSDL...

[ERROR] IOException thrown when processing "http://www.w3.org/2005/05/xmlmime". Exception: java.net.ConnectException: Connection refused: connect.

有了代理,我得到了

parsing WSDL...


[ERROR] Server returned HTTP response code: 504 for URL: http://10.31.7.64:13080/service.wsdl

可能是代理问题,但我在公司网络后面没有另一个代理。

【问题讨论】:

    标签: maven proxy wsimport http-proxy


    【解决方案1】:

    更好的方法是使用 JVM 的 noProxy 变量。然后,当 WSDL 不可用时,您的构建会失败(在我的情况下,这对集成测试非常有用)您可以将其添加到 jaxws-maven-plugin 配置中:

    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
        <execution>
            <id>wsdltoJava</id>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <wsdlUrls>
                    <wsdlUrl>https://someService.yourcompany.net/Service/Service?wsdl</wsdlUrl>
                </wsdlUrls>
                <vmArgs>
                    <vmArg>-Dhttp.nonProxyHosts=*.yourcompany.net, 10.31.7.64</vmArg>
                </vmArgs>
                <keep>true</keep>
                <packageName>com.yourcompany.package</packageName>
                <sourceDestDir>your/target/directory</sourceDestDir>
            </configuration>
        </execution>
    </executions>
    

    【讨论】:

      【解决方案2】:

      AFAIU,当我们启用httpproxy 时,所有请求都将转到该代理,包括&lt;wsdlUrl&gt;

      服务器返回

      HTTP response code: 504 for URL: http://10.31.7.64:13080/service.wsdl 
      

      Status Code Definitions 告诉我们如下:-

      504 网关超时

      服务器在充当网关或代理时,没有收到来自它需要访问的 URI(例如 HTTP、FTP、LDAP)或其他一些辅助服务器(例如 DNS)指定的上游服务器的及时响应正在尝试完成请求。

      根本原因可能是代理不知道我们的地址,在这种情况下是10.31.7.64

      恕我直言,请尝试下载wsdl 并将其放入本地计算机。然后使用wsdlFiles进行配置,如下例:-

       <configuration>
           <wsdlFiles>
               <wsdlFile>${basedir}/path/to/wsdl</wsdlFile>
           </wsdlFiles>
       </configuration>
      

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 2013-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多