Perché hai citato CXF, suppongo che tu intenda il plugin cxf-codegen. È un po 'un trucco, ma funziona.
Le credenziali di autenticazione HTTP possono essere fornite utilizzando java.net.Authenticator. È sufficiente definire la propria classe Authenticator che sovrascrive il metodo getPasswordAuthentication (..). Quindi deve essere impostato come Autenticato predefinito. Per quanto ne so, non può essere fatto in modo dichiarativo (ad esempio usando le proprietà dell'ambiente) solo in modo programmatico usando Authenticator.setDefault (..).
Per chiamare Authenticator.setDefault (..) vorrei utilizzare il meccanismo di estensione CXF. Crea progetto separato Maven con classe simile:
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());
}
});
}
}
e file src \ principali risorse \ \ META-INF \ CXF \ bus-extensions.txt con contenuti:
org.example.AuthenticatorReplacer::false
Quindi aggiungere progetto appena creato come una dipendenza a CXF-codegen-plugin:
<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>
In questo modo AuthenticatorReplacer viene inizializzata dal meccanismo di estensione CXF e sostituisce Authenticator di default con la nostra.
fonte
2012-12-26 18:55:19
Mi hai salvato la vita oggi. Sarebbe bello se qualcuno potesse scoprire come ottenere lo stesso senza un "hack", ma hey funziona., – membersound