2011-10-04 12 views
11

हमारी आवश्यकताओं में से एक के लिए मैं HTTP प्रोटोकॉल का उपयोग कर दो सर्वरों के बीच बात कर रहा हूं। बातचीत लंबे समय तक चल रही है, जहां कोई उपयोगकर्ता लंबे समय तक अंतराल के लिए दूसरी साइट से बातचीत नहीं कर सकता है।ब्राउज़र के बिना प्रोग्रामिक रूप से HTTP सत्र जीवित रखें

जब वे पृष्ठ पर आते हैं, तो दूरस्थ साइट में लॉग इन करें। हर बार जब उपयोगकर्ता रिमोट साइट से बातचीत करने की कोशिश करता है, आंतरिक रूप से मैं एक HTTP कॉल करता हूं (सत्र आईडी के आधार पर स्वामित्व किया जाता है)।

मैं सोच रहा था कि सत्र को रीफ्रेश करने का तरीका है और यह सुनिश्चित करना है कि यह समाप्त नहीं हो रहा है।

मेरी सीमित समझ के अनुसार, ब्राउज़र हेडर या कुकी (जिसे मैं पूरी तरह से समझ में नहीं आता) में जीवित रहने से इसे संभालता हूं। क्या कोई भी जीवित व्यवहार

+0

ऐसी कोई जादू नहीं है; यदि Keep-Alive की अनुमति है तो पहले अनुरोध के बाद टीसीपी/आईपी कनेक्शन बस खुला रहता है। – EricLaw

+1

हमें कनेक्शन टाइमआउट के बीच एक अंतर बनाने की आवश्यकता है, जो टीसीपी/आईपी परत पर होता है और HTTP परत टाइमआउट से असंबंधित है, जो ऊपर की परत पर होता है। @Fazal जीवित रखना चाहता है HTTP सत्र है, टीसीपी कनेक्शन नहीं। – Twilite

+0

मुझे एक अच्छा एसएसओ समाधान लागू करने की आवश्यकता है ... – CelinHC

उत्तर

0

Apache HttpClient का एक नज़र डालें और its tutorial देखें। HttpClient जीवित शीर्षलेख और अन्य सुविधाओं को रखने में सहायता करता है जो आपको प्रोग्रामेटिक रूप से HTTP कॉल करने में सक्षम बनाता है।

+0

धन्यवाद मैं इसे आजमाउंगा और आपको जल्द ही अपडेट करूँगा – Fazal

10

1.

<session-config> 
     <session-timeout>-1</session-timeout> 
</session-config> 

बस अपनी तैनाती वर्णनकर्ता (डीडी) में इस टुकड़े कोड यदि पेस्ट करें।
यदि आप अपने सत्र को किसी विशेष अवधि के लिए जीवित रखना चाहते हैं तो -1 को किसी भी सकारात्मक संख्यात्मक मान के साथ बदलें।
यहां निर्दिष्ट समय मिनटों में है।

2.

आप आवेदन में किसी अन्य सत्र के समय समाप्ति अवधि को प्रभावित किए बिना एक विशेष सत्र उदाहरण के लिए सत्र टाइमआउट मान बदलना चाहते हैं:

session.setMaxInactiveInterval(30*60); 


** * ** * ** * ** * ** * ** * ** * *
नोट:

1. डीडी में, निर्दिष्ट समय मिनट में है।
2. यदि आप इसे प्रोग्रामिक रूप से करते हैं, तो निर्दिष्ट समय सेकंड में है।

आशा इस मदद करता है :)

+0

धन्यवाद .. मुझे यह विचार पसंद है। लेकिन यहां मेरा इरादा ब्राउज़र व्यवहार को अनुकरण करना है। इसलिए अगर मैं रिमोट सर्वर से अनुरोध प्राप्त करता हूं तो मैं केवल सत्र को जीवित रखूंगा। लेकिन मुझे नहीं पता कि सत्र को जीवंत रखने के लिए दूरस्थ सर्वर से http अनुरोध में कौन सी शीर्षलेख सेट करना है – Fazal

1

मुझे लगता है कि नीचे दिए गए कोड, आप मदद कर सकते हैं अगर आप jsessionid कुकी पारित कर सकते हैं तो अपने कंटेनर जिम्मेदारी ले जाएगा सत्र जिंदा अगर इसकी एक ही सत्र कुछ अन्य ब्राउज़र से बनाया जा सकता है कि रखने के लिए ।

नीचे दिए गए लिंक को ढूंढें जो बहुत समझाया गया है।लिंक से

Click Here

कोड स्निपेट के ऊपर

BasicCookieStore cookieStore = new BasicCookieStore(); 
    BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "97E3D1012B3802114FA0A844EDE7B2ED"); 
    cookie.setDomain("localhost"); 
    cookie.setPath("/CookieTest"); 
    cookieStore.addCookie(cookie); 
    HttpClient client = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build(); 

    final HttpGet request = new HttpGet("http://localhost:1234/CookieTest/CookieTester"); 

    HttpResponse response = client.execute(request); 
संबंधित मुद्दे