我希望使用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>
答案 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