2012-08-07 7 views
6

मेरे पास पारस्परिक SSL प्रमाणीकरण का उपयोग कर एक वेब सेवा है। जब मैं क्लाइंट का प्रमाणपत्र स्थापित करता हूं तो मैं ब्राउज़र में बस ठीक कर सकता हूं।सर्वर क्लाइंट प्रमाणपत्र की अपेक्षा करते समय wsimport का उपयोग कैसे करें?

मुझे सेवा तक पहुंचने के लिए जावा कोड उत्पन्न करने के लिए wsimport का उपयोग करके इसे एक्सेस करने में सक्षम होना चाहिए।

मैं अपने प्रमाण-पत्र कैसे स्थापित कर सकता हूं ताकि मैं wsimport का उपयोग कर यूआरएल तक पहुंच सकूं?

यहां मैं जो कोशिश कर रहा हूं उसका एक उदाहरण है, लेकिन प्रमाणीकरण की अक्षमता के कारण यह समय समाप्त हो गया है।

wsimport ./sample.wsdl -p com.company.ws.sample -Xnocompile -d ./src -extension -keep -XadditionalHeaders

किसी भी मदद के लिए धन्यवाद

संपादित करें:

यह वही है wsimport प्रिंट है। डबल्यूएसडीएल निश्चित रूप से वैध है, और दिए गए स्थान पर, यह पता लगाना प्रमाणीकरण के लिए अपनी उपलब्धियों को में पारित करने के लिए कैसे की बात है:

wsimport https://wsdl.location.com?WSDL -p com.company.ws.sample -Xnocompile 
-d ./src -extension -keep -XadditionalHeaders 


parsing WSDL... 

[ERROR] Received fatal alert: handshake_failure 

Failed to read the WSDL document: "https://wsdl.location.com?WSDL", because 1) could 
not find the document; /2) the document could not be read; 3) the root element of 
the document is not <wsdl:definitions>. 

[ERROR] failed.noservice=Could not find wsdl:service in the provided WSDL(s): 

At least one WSDL with at least one service definition needs to be provided. 

    Failed to parse the WSDL. 
+0

आपके द्वारा सामना की गई त्रुटि/अपवाद स्टैकट्रैक साझा करने से दूसरों को समस्या को समझने में मदद मिलती है। – sundar

+0

मैंने अधिक जानकारी दिखाने के लिए पोस्ट को अपडेट किया है। धन्यवाद – Cuga

+0

http://ibswings.blogspot.in/2008/12/running-axis-wsdl2java-on-https-wsdl.html इसे आजमाएं – sundar

उत्तर

8

आप सीधे WsImport जावा वर्ग (source) कॉल कर सकते हैं और JVM आवश्यक जोड़ने जावा के लिए तर्क है कि क्लाइंट प्रमाणपत्रों को कहां देखना है।

कुछ की तरह

java -classpath C:\jdk160_29\lib\tools.jar -Djavax.net.ssl.trustStore=c:\jdk160_29\.mykeystore com.sun.tools.internal.ws.WsImport https://host:8443/Webservice?wsdl -p com.test -s ./src" 

चाल करना चाहिए।

+2

यह चाल +1 – RamonBoza

+0

विफल होगा मुझे "थ्रेड में अपवाद" मुख्य "java.lang.No.SuchFieldError: theInstance' के साथ, हालांकि मुझे एक विकल्प मिला है। –

3

मैं _JAVA_OPTIONS पर्यावरण चर सेट करके सभी अतिरिक्त सिस्टम गुणों को पार करने के लिए ऐसा करने में कामयाब रहा; एक Windows बैच फ़ाइल के रूप में यह (इस तरह दिखता है के रूप में उपयुक्त में अपना पासवर्ड डालने: विवेक की खातिर

setlocal 
set _JAVA_OPTIONS=%_JAVA_OPTIONS% -Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts" -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword={...passwordForThePFX...} -Djavax.net.ssl.keyStore=r:\cert.pfx 
wsimport -s . -verbose https://your.host.name/path/to/service?wsdl 
endlocal 

, लंबे समय से 'सेट' लाइन में जावा विकल्प हैं:

-Djavax.net.ssl.trustStore="%JAVA_HOME%\jre\lib\security\cacerts" 
-Djavax.net.ssl.keyStoreType=PKCS12 
-Djavax.net.ssl.keyStorePassword={...passwordForThePFX...} 
-Djavax.net.ssl.keyStore=R:\cert.pfx 

आप कर सकते हैं या trustStore सेटिंग को विशिष्ट करने की आवश्यकता नहीं होनी चाहिए; मुझे लगता है कि मेरे पास कुछ इंस्टॉल हैं और जावा मेरे लिए गलत कैकर्ट फ़ाइल उठा रहा था।

इसी प्रकार आपको keyStorePassword की आवश्यकता नहीं होगी यदि कीस्टोर नहीं है पासवर्ड सुरक्षित नहीं है।के लिए, यदि आप जावा कीस्टोर तक नहीं पहुंच रहे हैं तो आपको इसे निर्दिष्ट करना होगा।

आखिरकार, केवल "अनिवार्य" विकल्प keyStore है जो परिभाषित करता है कि क्लाइंट प्रमाणपत्र और कुंजी कहाँ रहते हैं (और यह केवल अनिवार्य है यदि क्लाइंट प्रमाणपत्र किसी कोर जावा प्रमाणपत्र स्टोर में नहीं है)। जैसा कि यह खड़ा है, ऊपर दिया गया उदाहरण क्लाइंट प्रमाणपत्र के लिए एक पीएफएक्स फ़ाइल में है जो इसे विंडोज प्रमाणपत्र स्टोर से निर्यात करके उत्पन्न किया गया है।

2

मैं बहुत करने के लिए आसान (डी, classpath, साथ खेलने के लिए कोई ज़रूरत नहीं है ...) पाया: आपके ब्राउज़र (द्वारा अपने डिफ़ॉल्ट ब्राउज़र में प्रमाणपत्र इंस्टॉल साथ SSL के माध्यम से
1. डाउनलोड wsdl पर डबल क्लिक करें कीस्टोर) या साबुनयूआई के साथ भी आसान (कॉन्फ़िगर/एसएसएल के माध्यम से कीस्टोर स्थापित करें) जो wsdl सामग्री
दिखाता है 2. डाउनलोड wsdl
के विरुद्ध wsimport चलाएं।

संबंधित मुद्दे