如何在cxf-maven-plugin中为wsdl定义密码

时间:2011-01-26 09:22:30

标签: maven cxf

我希望使用cxf-maven-plugin根据此文档从WSDL生成Java代码:http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html

我尝试访问的服务受密码保护。如何指定密码?这似乎没有记录。

 <plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
        <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
        <wsdlOptions>
          <wsdlOption>
            <wsdl>http://host/TheService.wsdl</wsdl>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

3 个答案:

答案 0 :(得分:3)

您可以像这样使用URI的基本身份验证方案:

<wsdl>http://username:password@host/TheService.wsdl</wsdl>

但是如果你的wsdl用相对路径引用xsd,那么用户名和密码将不会用于加载那些xsd ...你可以做的是设置一个全局的Authenticator ...你需要做的是添加exec插件来运行一个Class,它将为当前运行的jvm设置defaut Authenticator:

使用http://mojo.codehaus.org/exec-maven-plugin/和exec:java在与codegen插件相同的jvm中运行您的类。 wsdl2java执行必须在exec:java之后执行。您的运行类将设置Authenticator作为解释:http://docs.oracle.com/javase/7/docs/technotes/guides/net/http-auth.html

有一天,我们将有一个有用的-Ddefault.authenticatorClass = package.to.my.AuthenticatorImpl jvm arg ......

答案 1 :(得分:0)

您是否尝试在user settings文件(〜/ .m2 / settings.xml)中包含主机的用户/密码?我会尝试这个,看看会发生什么。

答案 2 :(得分:0)

似乎无法使用此插件下载受密码保护的wsdl,至少在WsdlOption中没有您实际配置的相应字段。

相反,在CXF版本2.3+中,您可以使用<wsdlArtifact>install the manually downloaded wsldfile

从maven存储库配置wsdl