2008-09-22 11 views
6

(मैंने jmeter-user मेलिंग सूची का एक ही प्रश्न पूछा है, लेकिन मैं यहां भी कोशिश करना चाहता था - इसलिए कम से कम मैं इसे अपडेट कर सकता हूं जवाब के साथ एक बार मुझे यह मिल गया)।"सॉकेट अपवाद: अनकनेक्टेड सॉकेट लागू नहीं किए गए" स्व-हस्ताक्षरित SSL प्रमाणपत्र

मुझे JMeter का उपयोग करके एक स्व-हस्ताक्षरित SSL प्रमाणपत्र का उपयोग करके टॉमकैट वेबैप का परीक्षण करने में समस्या हो रही है। जेएमटर संदेश Unconnected sockets not implemented संदेश के साथ सॉकेट अपवाद फेंकता है। According to JMeter's docs, एप्लिकेशन को किसी प्रमाण पत्र, स्वयं हस्ताक्षरित या सीए हस्ताक्षरित या जो कुछ भी स्वीकार करने के लिए डिज़ाइन और लिखा गया है।

क्या कोई इस विशिष्ट अपवाद में पहले चला गया है?

मैंने इस प्रमाणपत्र को सर्वर से निर्यात करने और इसे अपने स्थानीय कीस्टोर में आयात करने का प्रयास किया है (keytool -import -alias tomcat -file के साथ), लेकिन परिणाम वही है।

मैंने javax.net.debug = सभी को JVM तर्क के रूप में सेट करने का भी प्रयास किया है (the JSSE reference guide इसे डिबगिंग चरण के रूप में सूचीबद्ध करता है); हालांकि, मुझे कहीं भी कोई डिबगिंग आउटपुट नहीं दिख रहा है - क्या मुझे इसे मानक आउट/त्रुटि के अलावा कहीं और उम्मीद करनी चाहिए?

उत्तर

2

यह उचित उत्तर के बजाय एक संकेत है: Google परिणामों पर एक सरसरी नज़र यह सुझाव देती है कि अपवाद आमतौर पर एक डिफ़ॉल्ट एसएसएल सॉकेट फैक्ट्री के उपयोग को मजबूर करने के लिए कोड के कारण होता है, जिससे उद्देश्य सॉकेट () इस पर आह्वान किया जाता है। कुछ परिणामों का सुझाव यह है कि जावा 6 में कुछ संस्करण में बग के कारण कभी-कभी समस्या होती है, या जब गलत पथ या पासवर्ड कुंजीस्टोर को प्रदान किया जाता है।

तो, मैं कहूंगा, जावा 5 का उपयोग करने का प्रयास करें। साथ ही, जेएमटर को एक अच्छी तरह से ज्ञात साइट पर इंगित करने का प्रयास करें जो उचित SSL प्रमाणपत्र का उपयोग करता है। इस तरह आप स्वयं हस्ताक्षरित प्रमाणपत्र परिकल्पना का परीक्षण कर सकते हैं।

+0

आप लिंक के कुछ, कीड़े के बारे में विशेष रूप से पोस्ट कर सकते हैं जावा 6 के कुछ संस्करणों में? –

+1

1.6-संबंधित: http://www.nabble.com/CXF-and-Java-6-Update-10-td19463818.html https://www.willuhn.de/bugzilla/show_bug.cgi?id= 628 https://bugzilla.kapott.org/show_bug.cgi?id=72 शेष: Googling का प्रयास करें :) – Alexander

0

मेरे पास jdk 1.6.0_10 के साथ वेब सेवा की समस्याएं थीं।

मैंने 1.6.0_16 में अपग्रेड किया और सब कुछ काम किया।

0

SSLSocketFactory * के लिए अपने क्लासपाथ को खोजने का प्रयास करें (ग्रहण में, मैं ऐसा करने के लिए ctrl-shift-t करता हूं)। आप एक मिल जाए, सुरक्षा वर्ग पर एक संपत्ति के रूप में सेट:

मेरी वातावरण में, मैं निम्नलिखित दो मिल गया है:

Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl"); 

या

Security.setProperty("ssl.SocketFactory.provider", "com.ibm.websphere.ssl.protocol.SSLSocketFactory"); 

(या जो कुछ भी के लिए आपको मिलने वाली अन्य कक्षा)

इसी प्रकार ServerSocketFactory के लिए, यदि आपको सर्वर सॉकेट की आवश्यकता है।

2

मुझे अपने कोड में एक ही समस्या थी (जेएमटर से संबंधित नहीं)।

मेरा कोड एक स्व-परिभाषित SocketFactory का उपयोग करता है। मुझे पता चला कि कक्षा com.sun.jndi.ldap.ConnectionMethod.invoke() का उपयोग कर SocketFactory के कुछ तरीकों को कॉल करती है। कॉल करने का प्रयास करने वाले तरीकों में से एक createSocket() है - पैरामीटर के बिना।

जब मैंने अपने कारखाने में ऐसी विधि को जोड़ा तो सभी ठीक काम करते थे।

5

अधिकांश javax.net.SocketFactory कार्यान्वयन सभी createSocket() तरीकों कि सार के रूप में है मापदंडों परिभाषित करते हैं। लेकिन जो ऐसा दिखता है पैरामीटर के बिना एक createSocket() विधि है:

public Socket createSocket() throws IOException { 
    throw new SocketException("Unconnected sockets not implemented"); 
} 

तो I'v आप उपवर्ग सार javax.net.SocketFactory आप पैरामीटर के साथ तरीकों ओवरराइड करने के लिए बल हो जाएगा, लेकिन यह याद करने में आसान है बिना createSocket() विधि ओवरराइड करने के लिए मापदंडों। इस प्रकार अपवाद फेंक दिया जाता है यदि आपका कोड createSocket() पर कॉल करता है। बस विधि को ओवरराइड करें और किया जाना चाहिए। :)

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