因爲你提到CXF,那麼我想你的意思是cxf-codegen-plugin。這有點黑客,但它的作品。
可以使用java.net.Authenticator提供HTTP認證憑證。我們需要定義自己的Authenticator類來覆蓋getPasswordAuthentication(..)方法。然後它必須被設置爲默認的身份驗證器。據我所知,它不能通過聲明方式(例如使用環境屬性)以編程方式使用Authenticator.setDefault(..)來完成。
爲了調用Authenticator.setDefault(..)我會使用CXF擴展機制。創建類似的類獨立的Maven項目:
public class AuthenticatorReplacer {
public AuthenticatorReplacer(Bus bus) {
java.net.Authenticator.setDefault(new java.net.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("test", "test123"
.toCharArray());
}
});
}
}
和文件的src \主\資源\ META-INF \ CXF \總線extensions.txt與內容:
org.example.AuthenticatorReplacer::false
然後加入新創建的項目作爲依賴於CXF-CODEGEN-插件:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${project.version}</version>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>cxf-authenticator-replacer</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
...
</plugin>
這樣AuthenticatorReplacer由CXF擴展機制初始化並取代默認的身份驗證與我們的。
今天你救了我一命。這將是很好,如果任何人可以找到如何實現相同的沒有「黑客」,但嘿它的作品。, – membersound