2012-10-11 13 views
5

मैं ओरेकल पीएल/एसक्यूएल पैकेज से जावा क्लास में लॉगिन क्रेडेंशियल पास करने वाली कई अलग-अलग (सत्र) वस्तुओं को बना रहा हूं। मैं फिर एक वेक्टर में इस (सत्र) वस्तुओं को स्टोर करता हूं। विचार कनेक्ट करना, आवश्यक चैनल खोलना, चैनल बंद करना और आखिरकार इस वेक्टर से एक विशेष सत्र डिस्कनेक्ट करना है। मैं इसे करने में कामयाब रहा लेकिन यह प्रत्येक कनेक्शन के लिए सिर्फ एक बार काम करता है। मेरा मतलब है, वेक्टर में मेरे पास (सत्र 1, सत्र 2, सत्र 3) है, जब मैं session1.connect() और फिर session1.disconnect() को कॉल करता हूं, मैं सत्र 1.कनेक्ट() को फिर से कॉल करने में सक्षम नहीं हूं, क्योंकि स्पष्ट रूप से यह कोशिश करता है सर्वर से कनेक्ट करने लेकिन फिर मैं मिलता है:जेएसएच एक सत्र का पुन: उपयोग कैसे करें

वेक्टर में संग्रहीत सत्र प्राप्त कर रहा है मैं एक सत्र खोलने के लिए और प्राप्त करें:

INFO: Connecting to sftp.myserver.com port 2122 
INFO: Connection established 
INFO: Remote version string: SSH-2.0-OpenSSH_4.7 
INFO: Local version string: SSH-2.0-JSCH-0.1.48 
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-  cbc,3des-ctr,arcfour,arcfour128,arcfour256 
INFO: aes256-ctr is not available. 
INFO: aes192-ctr is not available. 
INFO: aes256-cbc is not available. 
INFO: aes192-cbc is not available. 
INFO: arcfour256 is not available. 
INFO: CheckKexes: diffie-hellman-group14-sha1 
INFO: diffie-hellman-group14-sha1 is not available. 
INFO: SSH_MSG_KEXINIT sent 
INFO: SSH_MSG_KEXINIT received 
INFO: kex: server: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange- sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
INFO: kex: server: ssh-rsa,ssh-dss 
INFO: kex: server: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr 
INFO: kex: server: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr 
INFO: kex: server: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
INFO: kex: server: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
INFO: kex: server: none,[email protected] 
INFO: kex: server: none,[email protected] 
INFO: kex: server: 
INFO: kex: server: 
INFO: kex: client: diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1 
INFO: kex: client: ssh-rsa,ssh-dss 
INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc 
INFO: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc 
INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96 
INFO: kex: client: hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96 
INFO: kex: client: none 
INFO: kex: client: none 
INFO: kex: client: 
INFO: kex: client: 
INFO: kex: server->client aes128-ctr hmac-md5 none 
INFO: kex: client->server aes128-ctr hmac-md5 none 
INFO: SSH_MSG_KEXDH_INIT sent 
INFO: expecting SSH_MSG_KEXDH_REPLY 
INFO: ssh_rsa_verify: signature true 
WARN: Permanently added 'sftp.myserver.com' (RSA) to the list of known hosts. 
INFO: SSH_MSG_NEWKEYS sent 
INFO: SSH_MSG_NEWKEYS received 
INFO: SSH_MSG_SERVICE_REQUEST sent 
INFO: SSH_MSG_SERVICE_ACCEPT received 
INFO: Authentications that can continue: publickey,keyboard-interactive,password 
INFO: Next authentication method: publickey 
INFO: Authentications that can continue: password 
INFO: Next authentication method: password 
INFO: Authentication succeeded (password). 
INFO: Disconnecting from sftp.myserver.com port 2122 

सब कुछ ठीक काम किया है और अंत में मैं session1 काट दिया।

फिर जब मैं session1 फिर मैं निम्नलिखित अपवाद उपयोग करने के लिए ...

INFO: Connecting to sftp.myserver.com port 2122 
INFO: Connection established 
INFO: Remote version string: SSH-2.0-OpenSSH_4.7 
INFO: Local version string: SSH-2.0-JSCH-0.1.48 
INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 
INFO: aes256-ctr is not available. 
INFO: aes192-ctr is not available. 
INFO: aes256-cbc is not available. 
INFO: aes192-cbc is not available. 
INFO: arcfour256 is not available. 
INFO: CheckKexes: diffie-hellman-group14-sha1 
INFO: diffie-hellman-group14-sha1 is not available. 
INFO: SSH_MSG_KEXINIT sent 
INFO: Disconnecting from sftp.myserver.com port 2122 
com.jcraft.jsch.JSchException: Packet corrupt 
at com.jcraft.jsch.Session.start_discard(Session.java:994) 
at com.jcraft.jsch.Session.read(Session.java) 
at com.jcraft.jsch.Session.connect(Session.java:288) 
at com.jcraft.jsch.Session.connect(Session.java:162) 
at sftp.make_dir(SFTP:118) 

मैं कुछ तरह से मैं जावा वस्तु (सत्र) का पुन: उपयोग करने की कोशिश में गलत कर रहा हूँ कोशिश? आपकी मदद के लिए बहुत बहुत

धन्यवाद

लुका

उत्तर

6
com.jcraft.jsch.JSchException: Packet corrupt 

एक चीजों की बहुत कनेक्शन स्थापित करने का आंतरिक रूप से होता है। हर बार एक सत्र बनाया जाता है, उस सत्र के साथ एक यादृच्छिक संख्या (जिसे पैकेट कहा जाता है) जुड़ा होता है। और यह सत्र एक जेएससी सत्र पूल में संग्रहीत है।

जब सत्र डिस्कनेक्ट हो जाता है, तो सत्र पूल से हटा दिया जाता है और पैकेट शून्य हो जाता है। ऐसी कई अन्य चीजें होती हैं जो उपरोक्त त्रुटि संदेश के लिए सबसे अधिक होती हैं।

अब जब आप पहले से डिस्कनेक्ट किए गए सत्र का उपयोग करके कनेक्ट करने का प्रयास करते हैं, तो उसे पैकेट नहीं मिलता है और यह त्रुटि फेंकता है।

+0

स्पष्टीकरण @ टुश्मिश के लिए धन्यवाद! समाधान के रूप में चिह्नित करने में देरी के लिए खेद है। उस समय मेरा "वर्कअराउंड" एक ऐरेलिस्ट में संग्रहीत सत्र ऑब्जेक्ट का एक कस्टम पूल बना रहा था और फिर उन्हें निपटाने का ख्याल रखता था। मुझे पता नहीं है कि सुरुचिपूर्ण है, लेकिन मुझे जो करना है उसके लिए काम करना। – Luca

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