क्योंकि आपने सीएक्सएफ का उल्लेख किया है तो मुझे लगता है कि आपका मतलब सीएक्सएफ-कोडेजन-प्लगइन था। यह एक हैक का थोड़ा सा है लेकिन यह काम करता है।
HTTP प्रमाणीकरण प्रमाण-पत्र java.net का उपयोग करके प्रदान किया जा सकता है। प्रमाणीकरणकर्ता। केवल अपनी खुद की प्रमाणीकरण कक्षा को परिभाषित करने की आवश्यकता है जो getPasswordAuthentication (..) विधि को ओवरराइड करता है। फिर इसे डिफ़ॉल्ट प्रमाणीकरणकर्ता के रूप में सेट किया जाना है। जहां तक मुझे पता है कि यह घोषणात्मक रूप से नहीं किया जा सकता है (उदाहरण के लिए पर्यावरण गुणों का उपयोग) केवल प्रामाणिक रूप से Authenticator.setDefault (..) का उपयोग कर।
Authenticator.setDefault (..) को कॉल करने के लिए मैं सीएक्सएफ एक्सटेंशन तंत्र का उपयोग करूंगा। इसी तरह वर्ग के साथ अलग 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 विस्तार प्रणाली द्वारा प्रारंभ और हमारे साथ डिफ़ॉल्ट प्रमाणक की जगह है।
स्रोत
2012-12-26 18:55:19
आपने आज मेरे साथ अपना जीवन बचाया। यह अच्छा होगा अगर कोई भी "हैक" के बिना इसे कैसे प्राप्त कर सके, लेकिन हे यह काम करता है। – membersound